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

时间:2015-01-23 11:40:31

标签: php jquery ajax

我正在使用ajax在同一页面上发布数据,并尝试使用以下脚本回显发布的数据。

$('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不会在页面上回显发布的数据,但是当我在另一个php文件上发布表单数据时,这是相同的PHP脚本; php能够回显发布的数据,ajax是警报。请帮我解决这个问题。感谢

1 个答案:

答案 0 :(得分:0)

如果没有将整个PHP页面视为一个列表,很难说清楚,但从您的描述来看,这听起来像是因为您宣布.click()事件的方式或者您发布到页。前者更有可能。

$.ajax()请求将使用XMLHttpRequest对象POST到您的PHP脚本。然后,PHP脚本应该获取这些值,并从脚本中的纯文本和插入的echo'd值的组合生成返回字符串。然后应该由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()