PHP 未捕获 ajax jquery 在同一页面上发送的 $_POST 数据

PHP not capture $_POST data send by ajax jquery on same page

我在同一页面上使用 ajax 到 post 数据,并尝试使用以下脚本用 php 回显 posted 数据。

$('button').click(function(){

         $.ajax({               
            type: "post",
            data: $("form").serialize(),
            beforeSend: function(){},
            success: function(data){alert(data)},
            error: function(err) {alert(err.responseText);} 
        })

})

和php脚本是:

<?php echo isset($_POST['data']) ?  $_POST['data'] :''; ?>

我的 html 是:

<form>
      <input type="hidden" name="data" value="to_success"/>
      <button type="button">Click Me</button>
</form>

我的问题是 php 没有在页面上回显 posted 数据,但是当我 post 在另一个相同的 php 文件上形成数据时 php 脚本; php 能够回显 posted 数据并且 ajax 对此有所警觉。请帮我解决这个问题。谢谢

如果不将整个 PHP 页面视为一个列表,则很难判断,但从您的描述来看,您的问题似乎是因为您声明 .click() 活动的方式或您发布到页面的方式。前者的可能性更大。

$.ajax() 请求将使用 XMLHttpRequest 对象 POST 到您的 PHP 脚本。然后 PHP 脚本应该采用这些值并根据脚本中的纯文本和插入的回显值的组合生成 return 字符串。然后,success 方法的回调函数会接收到它,并在警告框中以 HTML 文本的形式向您的页面发出警报。

确实,如果我使用以下代码,就会发生这种情况:

<!DOCTYPE html>
<html>
<head>
    <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
    <script>
    $(document).ready(function() {
        $('button').click(function() {
             $.ajax({               
                type: "post",
                data: $("form").serialize(),
                beforeSend: function() {},
                success: function(data) {
                    alert(data);
                },
                error: function(err) {
                    alert(err.responseText);
                } 
            });
        });
    });
    </script>
</head>
<body>

    <?php echo isset($_POST['data']) ?  $_POST['data'] :''; ?>

    <form>
       <input type="hidden" name="data" value="to_success"/>
       <button type="button">Click Me</button>
    </form>

</body>
</html>

但是,如果我注释掉 $(document).ready(function(){ 的行及其相应的结尾 });,那么当我单击时什么也不会发生。

因此,请尝试将您的 .click() 事件定义包装在 $(document).ready().