2016-02-13 72 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

希望這是你在找什麼。