获取未定义的错误
我想提出一个AJAX请求到我的GPS服务器,它返回以下JSON格式在成功的情况下,获取未定义的错误
{"result":[{"longitude":76.391529,"latitude":27.974347,"location":"Delhi-Ajmer Expressway - Madhosinghpura- Alwar - Rajasthan - India","speed":0,"dttime":"14 Feb 2016 00:38:47","ignition":0,"vehicle_name":"ABCD","icon":0}]}
,并在出现故障的情况下:
{"result":[{"error" : "Vehicle location did not found" }]}
这是我的代码:
ajaxURL = "http://www.vehicletrack.biz/api/vehlastlocation?token=K2ZFKFMP3A&vehname="+vehicleNum;
//start ajax request
$.ajax({
url: ajaxURL,
dataType: "text",
success: function(data) {
alert(data[0].longitude);
}
});
首先,我要处理的错误情况下,如果结果为p罗珀然后我想显示每个字段。任何人都可以帮助我访问JSON响应的元素并处理错误情况。
PS:这是我第一次用JSON和谷歌搜索没有返回相关的JSON格式的例子。命中和审判没有帮助。
变化dataType
到json
//start ajax request
$.ajax({
url: ajaxURL,
dataType: "json",
success: function(data) {
var json = data.result[0].longitude;
alert(json);
}, error: function(data) {
var err = data.result[0].error;
alert(err);
}
});
您可以处理像下面这样的错误情况。
success: function(data) {
data = JSON.parse(data);
if(data.result[0].error){
// error
alert('Error');
} else {
// access all properties using loop
var obj = data.result[0];
for (var prop in obj) {
var propValue = obj[prop]; // access property like this
}
}
}
我仍然没有定义'data.result'。 –
使用'JSON.parse'。你也可以尝试'dataType:“json”'。查看更新的答案。 @InsaneCoder – Azim
你想返回你的结果数据作为JSON和治疗你的结果作为对象。但是,您的ajax调用中指定的数据类型是文本。我从来没有使用'文本'作为dataType,但我很确定这是行不通的。尝试使用dataType:'json'
而不是如果您想要将结果处理/解析为来自json的对象。
因为,你想是这样的:
//start ajax request
$.ajax({
url: ajaxURL,
dataType: "json",
success: function(data) {
var str = 'result ';
var a = data.result;
for (var i = 0; i < data.result.length; i++)
{
foreach (prop in item)
{
// do stuff
str += ' ' + prop;
}
}
alert(str);
}
});
一个问题,你可以运行到这里使用跨域请求(您发送您的Ajax调用域名不一样的一个您的网页位于)。如果是这种情况,则必须在服务器上执行一些特殊处理并使用jsonp
数据类型。你可以得到详细信息here。
希望这是你在找什么。
根据你发布的内容,是不是'data.result [0] .longitude' – adeneo
你不需要'$ .parseJSON(data);'在你的成功处理程序中吗? –
为了简化您的工作,请打开Chrome开发人员工具并在控制台中输入:var result = {“result”:[{“error”:“找不到车辆位置”}}} 然后按回车键 然后放入结果并再次按Enter –