在为AJAX请求解析JSON时,获取未定义的错误

时间:2016-02-13 19:23:43

标签: jquery json ajax

我正在向我的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格式示例。命中和审判没有帮助。

3 个答案:

答案 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

希望这就是你要找的东西。