我正在向我的GPS服务器发出一个AJAX请求,如果成功,会返回以下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);
}
});
首先,我想处理错误情况,如果结果正确,那么我想显示每个字段。任何人都可以帮助我访问JSON响应的元素并处理错误案例。
PS:这是我第一次使用JSON和谷歌搜索没有返回相关的JSON格式示例。命中和审判没有帮助。
答案 0 :(得分:1)
您可以处理以下错误案例。
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
}
}
}
答案 1 :(得分:0)
将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);
}
});
答案 2 :(得分:0)
您尝试将结果数据作为json返回,并将结果视为对象。但是,ajax调用中指定的数据类型是text。我从来没有使用'text'作为dataType,但我很确定这不起作用。如果要将结果从json处理/解析为对象,请尝试dataType:'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。
希望这就是你要找的东西。