2011-11-28 27 views
0

我需要接收JSONP異步請求的值。當我將「數據」分配給全局變量時,我收到一個空的對象。請幫幫我。現在如何獲取異步JSONP請求的值?

,我在我的代碼得到

var url = "http://local/main/getEventData/" + event_id; 
var script = document.createElement('script'); 
script.setAttribute('src', url); 
document.getElementsByTagName('head')[0].appendChild(script); 

var event_data = {}; 

function callback(data) { 
    event_data = data; 
} 

和JSONP

callback({name: 'John'}) 

PS請求絕對作品,我可以通過顯示的console.log(數據)

+1

這不是JSON-P。 JSON-P將是:'callback({「name」:「John」})'。屬性名稱必須是字符串(不是標識符),而字符串必須用''''而不是'''引用。 – Quentin

+0

你怎麼知道你「收到一個空的對象」?你什麼時候測試event_data?你能否過早地閱讀它? – Amadan

+0

@Quentin:這是不必要的調試 - JSONP正在執行,並且在JavaScript代碼中,只要名稱部分服從某些限制,「{name:'John'}'是有效的,只要名稱部分服從某些限制。它應該工作 – Amadan

回答

2

使用數據的數據變量當你得到它,而不是(因爲我認爲你現在正在嘗試),只要你請求它。

function callback(data) { 
    event_data = data; 
    // Now you have the data, do something with it. 
} 

// Don't try to use event_data here. There's no way 
// to know if the callback has fired yet 
1

你會得到什麼將會工作得很好。你只需要把代碼(或者函數的調用,或者其他的)放在的「回調」函數中,這樣代碼才能運行,直到腳本被檢索到。