2012-09-02 53 views
1

我正在使用CoffeeScript和jQuery,試圖從存儲在局部變量中的ajax調用中獲取數據,因此我可以在我的方法的其餘部分中使用它。這是我現有的代碼:CoffeeScript:從jQuery中存儲數據Ajax調用變量

response = null 
$.ajax 
    url: '/polygons' 
    dataType: 'json' 
    success: (data, textStatus, jqHXR) -> 
    response = data 

console.log response 

使用此代碼,響應始終保持爲空。我想要做的就是從成功函數和調用方法中獲取數據變量,但我似乎無法將它從該範圍中解脫出來。我在這裏做錯了什麼?

回答

4

Ajax是異步的,所以當您調用console.log response時,不會設置響應,請在回調函數中使用響應。

response = null 
$.ajax 
    url: '/polygons' 
    dataType: 'json' 
    success: (data, textStatus, jqHXR) -> 
    response = data 
    console.log response 

我如何確保直到Ajax調用完成後,此腳本等待,所以使用空響應對象也不會繼續?

你應該只是做所有的處理在回調函數,如果你不想這樣做,你可以通過AJAX選項

+0

好異步爲false改變使Ajax調用同步,因此如何我是否確保腳本在此之後等待,直到ajax調用完成,因此它不會繼續使用空響應對象? – Andrew

+2

您應該只在回調函數中執行所有處理,如果您不想這樣做,則可以通過在ajax選項中將async更改爲false來使ajax調用同步。 – Musa

+0

使用'async:false'解決這個特定情況下的所有問題。謝謝! – Andrew