当我尝试使用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';
}
基本。让我感到沮丧的是,它很简单,我已经做了一些研究但仍然没有用。我也希望它尽可能简单。
请赐教。
答案 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 request
或Got 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';
}