Jquery Ajax没有回复

时间:2011-10-23 16:06:20

标签: php javascript jquery

当我尝试使用Jquery ajax从php文件获取响应时,我只是得到(an empty string)(使用console.log(data)来调用Firebug控制台)

这是Html代码:

<form action="test.php" method="POST" id="ajax">
    <input type="text" name="field" />
    <input type="submit" value="submit" name="submit" />
</form>

这是Jquery代码:

$('#ajax').submit(function(e) {
    e.preventDefault();

    $.ajax({
       type: 'POST',
       data: $(this).serialize(),
       url: 'test.php',
       cache: false,
       success: function(data) {
           alert(data); 
       }
    });

    return false;
});

PHP代码:

if ($_POST['submit'] == "submit") 
{
    echo 'Got your request';
} 

基本。让我感到沮丧的是,它很简单,我已经做了一些研究但仍然没有用。我也希望它尽可能简单。

请赐教。

2 个答案:

答案 0 :(得分:3)

请不要通过检查字段名来检查您是否处于POST状态。这是不正确的 - 您可能会更改客户端表单名称而忘记更新PHP检查。

100%可靠的方法是使用:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo "Got your request";
}

但是,既然您只是想通过ajax调用来查看服务器是否完全被ping,那么为什么不这样做:

<?php

echo "Got your ", $_SERVER['REQUEST_METHOD'], " request";

只会返回Got your POST requestGot your GET request等...

同样,请检查您的服务器日志(或使用HTTPFOX / Firebug Net选项卡等)以查看该ajax请求是否实际发出并被服务器接收。

答案 1 :(得分:2)

serialize()方法的问题在于它不包含您在php脚本中使用的按钮参数的名称(submit=submit参数)。它没有这样做,因为它不知道点击了哪个按钮。只有在正常提交表单时,浏览器才会包含此参数。

因此,有一种可能性是将此参数手动附加为查询字符串参数:

url: 'test.php?submit=submit',

并在您的PHP脚本中:

if ($_GET['submit'] == "submit") 
{
    echo 'Got your request';
}