2013-06-12 118 views
1

我正在通過ajax調用api。顯示結果最簡單的方法是什麼?如果我提醒結果,我只是得到[對象對象],如果我試圖提醒我知道返回的json結果(例如results.title),我只是得到'未定義'的錯誤。ajax json請求,如何顯示結果?

代碼即時通訊使用的樣子:

$.ajax({ 
    url: 'http://API-LINK-format=json', 
    dataType: 'json', 
    success: function(results) { 
    alert(results.title); 
    alert(results) 
    } 
}) 

我試圖parseJSOn,但我得到一個錯誤與到,意外的標記O操作。

任何幫助讚賞!感謝

API返回類似:

{"request": 
    { 
    "format":"json","method":"theMethod","id":"theID"}, 
    "time":"0.00863", 
    "job":{"types":{"type":["Permanent"]}, 
    "email":"EMAIL", 
    "title":"theTitle" 
    } 
} 
只使用

多個嵌套,再等

編輯::

alert(results.request.title); 

我仍然有一個未定義的警報。我跑了一個循環,結果我以某種方式得到3個結果?我運行此代碼:

$.ajax({ 
    url: 'http://API-LINK-format=json', 
    dataType: 'json', 
    success: function(results) { 
     $.each(results, function(i, result){ 
      alert(result.title) 
     } 
    } 
}) 

,並提醒3次,第2爲未定義,然後第3給我我需要什麼。但就像我說的,我知道該API返回一個JSON像上面的,只是更多項目

+1

在瀏覽器中訪問該URL以查看它返回的內容。 –

+0

它返回一個json數組,更新我的問題 – rpsep2

+0

更可能是一個對象數組,因此您需要嘗試結果[0] .title,但沒有看到數據返回它無法回答。 – DAC84

回答

2

您需要

requests.job.title 

這是你的實際結構,如果您格式化它

{ // <-- this is your requests object 
    "request": { // -- what you want isn't in here -- this is the first element in the each loop 
     "format": "json", 
     "method": "theMethod", 
     "id": "theID" 
    }, 
    "time": "0.00863", // <-- it isn't here either -- this is the second element in the each loop 
    "job": { // it's here - so you want request.job -- this is the third 
     "types": { 
      "type": ["Permanent"] 
     }, 
     "email": "EMAIL", 
     "title": "theTitle" // to get this it's request.job.title 
    } 
} 

FIDDLE

如果您使用的瀏覽器 - 它可以很容易通過做的console.log和檢查控制檯

+0

這種幫助...我現在得到一個不同的問題,編輯原始問題 – rpsep2

+0

@ rpsep2你可以粘貼整個json在jsfiddle.net? –

+0

@ rpsep2啊..我知道它出錯了我會重寫我的回答 –

0

我想是一個異步的問題,檢查你的對象,嘗試:

var req = function(){ 

return $.ajax({ 
     url: 'http://API-LINK-format=json', 
     dataType: 'json', 
     success: function(results) { 
      console.log('success'); 
     } 
     }) 
}); 

req().done(function(data) { 
//do something with data 
}); 

也許我猜錯了,但試試看。

http://api.jquery.com/deferred.done/