2016-02-13 74 views
0

我想提出一个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格式的例子。命中和审判没有帮助。

+0

根据你发布的内容,是不是'data.result [0] .longitude' – adeneo

+0

你不需要'$ .parseJSON(data);'在你的成功处理程序中吗? –

+1

为了简化您的工作,请打开Chrome开发人员工具并在控制台中输入:var result = {“result”:[{“error”:“找不到车辆位置”}}} 然后按回车键 然后放入结果并再次按Enter –

回答

0

变化dataTypejson

//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); 
    } 
}); 
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 
     } 
    } 
} 
+0

我仍然没有定义'data.result'。 –

+0

使用'JSON.parse'。你也可以尝试'dataType:“json”'。查看更新的答案。 @InsaneCoder – Azim

0

你想返回你的结果数据作为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

希望这是你在找什么。