1

我在我写的一个简单的 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”响应时,它是“字符串”类型,

但是由于某种原因,我在 .done() 函数中收到的警报是“错误”而不是“加载完成”。

if 语句之前的“alert(d)”给出“已保存”。

我在这里想念什么?

4

3 回答 3

1

您应该使用更健壮的返回类型,例如 JSON:

header('Content-Type: application/json');
echo json_encode(array(
    'status' => 'saved',
));

然后在您的成功处理程序中:

if (d.status == 'saved') { ... }
于 2013-01-22T13:12:03.593 回答
0

尝试

jQuery.ajax({
    type: "POST",
    url: "complete.php",
    data: "id=someIdHere",
    success: function(){ alert('loading done'); },
    error: function(){ alert('error'); }
    });
于 2013-01-22T13:01:25.377 回答
0

很奇怪,但我发现了这个问题。

我的 php 是

echo "saved";

这是正确的,但是当我根据@mplungjan 的建议调试返回时,返回是“已保存”(带有空格)这很奇怪,因为 php 没有空格,然后我将 php 更改为

echo trim("saved");

但是当我再次调试返回时,它再次被“保存”(带有空格)

不知道为什么要应用空白,但我已经通过替换 return / .done() 函数中的空白来解决它

我不会选择这个作为答案,但如果有人知道锄头,我很想知道可以添加空白。

我在山狮上使用 Firefox 18

于 2013-01-22T13:08:19.787 回答