当没有jquery ajax的数据获取时显示错误消息

时间:2017-12-14 11:50:20

标签: javascript php jquery json ajax

我开始学习ajax。我有API。 API返回两种类型的响应 1.当我有数据并且系统中没有数据时成功 2.出现服务器错误时出错(例外)。

在API文档中我有类似的东西

领域 - 成功 type - 布尔值 响应状态 - 真/假

字段 - 数据 type - object

内部数据对象我有其他字段。我想做的很简单。显示系统中的数据,并在没有数据时显示错误消息。

根据文档,当数据在系统中时,这是样本正确的响应

{
"success": true,
"data": {
    "office_id": 1,
    "office_type": "s",
    "registrar_name": null,
    "registrar_mobile": null,
    "registrar_email": null
  }
}

并在系统中没有数据时正确响应

{"success": true}

{
    "success": true,
    "err": "error message"
}

这就是我现在所得到的。当它在系统中找到mydata时,它会正确显示字段。但是当系统中没有数据时,我得到了未定义的信息。这段代码出了什么问题?

$('#test').on('click', function(){
  $.ajax({
    dataType: 'json',
    type:"GET",
    url:"http://mywebsite.com/api/mydata",
    success: function(response, data) {
        console.log(data.data);
    },
    err: function(response, data) {
        console.log("no data");
    }
 });
});

4 个答案:

答案 0 :(得分:1)

首先,将您的成功函数更改为只有一个参数,根据the documentation,第二个参数(在本例中名为data)将是 textStatus 。< / p>

然后您可以检查响应的属性,以确定您是否有数据或响应是否有错误

success: function (response) {
    if (response.err != undefined) {
        console.log("Error");
    }

    if (response.data != undefined) {
        console.log("There is data");
    } else {
        console.log("No data")
    }
}

请注意,在您的示例数据中,出现错误的响应仍为success:true,这对我来说似乎有点愚蠢,因为如果出现错误则不应该成功。

答案 1 :(得分:0)

你想要那个;

success: function(response, data) {
    if(data.data == undefined)
    {
        //There is no data
    }
}

答案 2 :(得分:0)

以我为例,通过循环,我解决了这样的问题:

success: function(response) {

  if (response.length == 0) console.log('No data!');

  $.each(response, function (index, item) { 

   [...]

  }
}

答案 3 :(得分:-1)

当可用数据

{
"success": true,
"data": [{
    "office_id": 1,
    "office_type": "s",
    "registrar_name": null,
    "registrar_mobile": null,
    "registrar_email": null
  }]
}

当数据不可用时使用

{
"success": true,
"data":[]
}

何时使用错误

{
"success": false,
"error": {code:"111",message:"Error message"}
}

在客户端

检查如下:

success: function(response, data) {
        var retrivedData=[];
        if(data.success && data.data.length){
         retrivedData=data.data;//or use data.data[0]
         }else if(data.success && data.data.length==0){
          console.log("No DATA")
          }else {
           console.log("Error in Data",data.error.message);
           }

    }