使用ajax调用api时出现响应错误

时间:2017-12-10 16:49:37

标签: javascript ajax api

我想检索houseType,这是使用ajax的api调用。 Console.log只有result可以,但其他人则显示undefined。我不知道为什么会这样。

$.ajax({
    url: 'http://api/get.php',
    type: 'GET',
    crossDomain: true,
    datatype:'json',
    data:{
      HouseNo: 2001
    },
    success: function(result) {
      console.log(result);
      console.log(result.error);
      console.log(result.houses);
      console.log(result.houses.houseType);
      if (result.error == false) {
      window.location.href = "viewHouses.php"
    }
  },
  error: function(result) {
      alert("Error");
  }
});

控制台日志result

{"error":false,"houses":[{"houseType":"Mansion"}]}

result.errorresult.houses的日志为undefined。我错过了什么?

1 个答案:

答案 0 :(得分:0)

正如jquery docs所述:

  

" json":将响应评估为JSON并返回JavaScript   宾语。跨域" json"请求转换为" jsonp"除非   请求在其请求选项中包含jsonp:false。 JSON   数据以严格的方式解析;任何格式错误的JSON都被拒绝了   抛出了一个解析错误。

如果您使用跨源请求请求数据,则选项应具有jsonp: false值:

$.ajax({
    url: 'http://api/get.php',
    type: 'GET',
    crossDomain: true,
    datatype:'json',
    jsonp: false,

    data:{
        HouseNo: 2001
    },

    success: function(result) {
        // ...
    },

    error: function(result) {
        // ...
    }
});

对我来说,这看起来像是你真正记录了某种类型的JSON(P)字符串。如果上述方法无效,请尝试使用以下内容解析result

try {
    var parsed = JSON.parse(result);
    console.log(parsed);
} catch(err) { console.log(err); }

我很好奇这个片段会记录什么。