如果返回dataType不是html,如何返回.fail()的回调?

时间:2015-01-05 07:13:23

标签: jquery ajax jquery-1.9

如果返回数据类型不是 html ,如何返回 .fail()的回调?

$.ajax({
  type:       "GET",
  dataType:   "html",
  url:        "server.php",
  async:      true,

  beforeSend: function() {
  },

  success: function (returndata) {

    console.log(returndata); // I will get {"message":"something"}

  }

}).fail(function(jqXHR) { // this callback does not work

    alert("error"); 

});

例如,在server.php

header('Content-Type: application/json');
echo '{"message":"something"}';

我会{"message":"something"}而不是error;

任何想法?

修改

    $.ajax({
        type:       "GET",
        dataType:   "xml",
        url:        "server.php",
        async:      true,

    beforeSend: function() {
    },

    success: function (returndata) {

        console.log(returndata); // I will get {"message":"something"}

    }

    }).fail(function(jqXHR) { // this callback does not work

        alert("error"); 

    });

如果我将dataType:更改为“xml ”,它会在预期的xml时返回错误(这就是我想要的) - 为什么它不能同时工作“html”的方式

1 个答案:

答案 0 :(得分:-1)

检查您的服务器是否将JSON作为纯文本编码或application / JSON进行响应。如果是JSON,请使用error()方法而不是fail()。如果内容类型不匹配,它将转到错误方法。这是一个例子。

$.ajax({
    type: "GET",
    dataType: "JSON",
    url: "google.com",
    async: true,
    success: function(data) {

    },
    error: function(err) {
        console.log("Err", err)
    }
});

上面的代码可以正常使用错误方法,如果内容类型是html则转到错误。在您的方案中尝试此操作。