AJAX |使用alert();其他文件中的函数不起作用

时间:2017-07-06 13:30:12

标签: javascript php jquery ajax

我正在研究Ajax并且仍在学习正确使用它。我想知道为什么在Ajax alert()的一边;但是在另一边工作 - 没有。

这是非常基本的代码:

$('.naudoti_papildus_visiems').click(function() {
    var n;                  

    $.post('/ajax/naudoti_papildus_visiems.php', { status : 1, fermos_id : '<?php echo $id_kurat; ?>', gyvulio_tipas : '<?php echo $type_zagon; ?>' },
    function(data) {
        var typeclick = data.typeclick,
            typeu = data.typeu,
            stil = data.stil,
            stildell = data.stildell;

        $.noty.closeAll();
        if (n) {
            n.setText('<b>' + data.message + '</b>');
            n.setType(typeu);
        } else {
            n = noty({
                text: '<b>' + data.message + '</b>',

                type: typeu,
                dismissQueue: false,
                layout: 'top',
                theme: 'defaultTheme',
                timeout: 3000,
            });
        }
    }, 'json');
});

“naudoti_papildus_visiems.php”内容:

<script>alert(9);</script>

我测试了一件事:使用alert();在Ajax中运行,它可以工作:

$('.naudoti_papildus_visiems').click(function() {
var n;                  

$.post('/ajax/naudoti_papildus_visiems.php', { status : 1, fermos_id : '<?php echo $id_kurat; ?>', gyvulio_tipas : '<?php echo $type_zagon; ?>' },
function(data) {
    var typeclick = data.typeclick,
        typeu = data.typeu,
        stil = data.stil,
        stildell = data.stildell;

    alert(9); // works

    $.noty.closeAll();
    if (n) {
        n.setText('<b>' + data.message + '</b>');
        n.setType(typeu);
    } else {
        n = noty({
            text: '<b>' + data.message + '</b>',

            type: typeu,
            dismissQueue: false,
            layout: 'top',
            theme: 'defaultTheme',
            timeout: 3000,
        });
    }
}, 'json');
});

Chrome控制台不会显示任何错误。任何帮助将不胜感激。

loelsonk:仍无效。我做错了吗?

    $('.naudoti_papildus_visiems').click(function() {
    var n;                  

$.ajax({
  url: '/ajax/naudoti_papildus_visiems.php',
  type: 'POST',
  dataType : 'json',
  data: { status : 1, fermos_id : '<?php echo $id_kurat; ?>', gyvulio_tipas : '<?php echo $type_zagon; ?>' },
  success: function(data) {
        var typeclick = data.typeclick,
            typeu = data.typeu,
            stil = data.stil,
            stildell = data.stildell;

        $.noty.closeAll();
        if (n) {
            n.setText('<b>' + data.message + '</b>');
            n.setType(typeu);
        } else {
            n = noty({
                text: '<b>' + data.message + '</b>',

                type: typeu,
                dismissQueue: false,
                layout: 'top',
                theme: 'defaultTheme',
                timeout: 3000,
            });
        }

        $('#data').html(data);
    }
});
});

1 个答案:

答案 0 :(得分:1)

如果您想执行js代码,请在申请回复中提及<script>alert(9);</script>,将其附加到#temp容器。

首先创建#temp容器,我们追加响应:

<div id="temp"></div>

我们使用$.post而不是$.ajax

$.ajax({
  url: '/ajax/naudoti_papildus_visiems.php',
  type: 'POST',
  data: { status : 1, fermos_id : '<?php echo $id_kurat; ?>', gyvulio_tipas : '<?php echo $type_zagon; ?>' },
  success: function(response) {
    // Do whatever you want here

    // response contains js code to be executed
    // Now your code gets executed
    $('#temp').html(response);
  }
}) 

修改

这是一个小工作示例,向您展示它是如何工作的:

我们有两个文件:

文件1: index.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>title</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <style>
            body {
                padding-left: 250px;
            }
            #temp {
                border: 2px solid #000;
                padding: 20px;
                width: 300px;
                min-height: 200px;
            }
        </style>
  </head>
    <body>
        <div>
            <h1>Ajax</h1>
            <button id="button" type="button">Perform ajax</button>

            <div id="temp"></div>
        </div>

        <script>
            $('#button').click(function(e) {
                $.ajax({
                url: '/ajax/naudoti_papildus_visiems.php',
                type: 'POST',
                data: { status : 1, fermos_id : 888, gyvulio_tipas : 'some_type' },
                success: function(response) {
                    // Do whatever you want here

                    // response contains js code to be executed
                    // Now your code gets executed
                    $('#temp').html(response);
                }
                });
            });
        </script>
    </body>
</html>

文件2: /ajax/naudoti_papildus_visiems.php (文件位于ajax dir内)

<?php

echo 'test';
echo '<script>alert(9);</script>';

了解它的工作原理: