我在一篇简单的ajax / jquery代码中看到了一些非常奇怪的东西,我写道,我无法解释为什么我会看到我看到的东西。
我有一个名为complete.php的php文件,目前唯一的做法是:
echo "saved";
我有一个jquery ajax调用,它有一个.done()函数,如下所示:
jQuery.ajax({
type: "POST",
url: "complete.php",
data: "id=someIdHere",
}).done(function(d){
alert(d);
if(d == "saved"){
alert('loading done');
}else{
alert('error');
}
});
我的萤火虫确认来自complete.php的回复是“已保存”。
当我输入'd'响应时,它的类型为'string',
但是出于某种原因,我在.done()函数中得到的警告是“错误”而不是“加载完成”。
if语句之前的'alert(d)'给'保存'。
我在这里缺少什么?
答案 0 :(得分:1)
您应该使用更健壮的返回类型,例如JSON:
header('Content-Type: application/json');
echo json_encode(array(
'status' => 'saved',
));
然后在你的成功处理程序中:
if (d.status == 'saved') { ... }
答案 1 :(得分:0)
试
jQuery.ajax({
type: "POST",
url: "complete.php",
data: "id=someIdHere",
success: function(){ alert('loading done'); },
error: function(){ alert('error'); }
});
答案 2 :(得分:0)
非常奇怪,但我发现了这个问题。
我的php是
echo "saved";
这是正确的,但是当我根据@mplungjan建议调试返回时,返回被“保存”(带有空格)这是奇怪的,因为php没有空格,我然后将php更改为
echo trim("saved");
但是当我再次调试返回时,它又被“保存”(带有空格)
不知道为什么要应用空白区域,但我已经通过替换return / .done()函数中的空格来解决它
我不会选择这个作为答案,但是如果有人知道锄头可以添加白色空间我喜欢知道。
我在山狮上使用firefox 18