jquery ajax问题。 .done()函数中的奇怪行为

时间:2013-01-22 12:53:56

标签: javascript jquery

我在一篇简单的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)'给'保存'。

我在这里缺少什么?

3 个答案:

答案 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