我开始学习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");
}
});
});
答案 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);
}
}