2016-12-05 36 views
0

拿這個例子我想換一個jQuery AJAX調用重用:如何在函數中包裝這個jQuery調用,以便我可以重用它?

function do_ajax(url, data) { 
    return $.ajax(url, { 
     method: 'GET', 
     data: data, 
     headers: { 
      Authorization: auth_header 
     }, 
     dataType: 'json' 
    }); 
} 

do_ajax('/my_url', { stuff: 'here' }).done(function(response) { 
    console.log('response'); 
}); 

據我所知,這應該工作。爲什麼不呢?我認爲$.ajax本身就是一個函數,因此可以通過封閉函數返回。任何人都可以聰明地解釋我做錯了什麼嗎?

+2

你有何應該可以正常工作。檢查控制檯是否有錯誤 –

+2

您在控制檯中收到的任何錯誤? – 31piy

+0

你總是可以在'do_ajax'調用之前放置'debugger',並檢查實際返回的內容。 如果失敗 - 檢查是否正在執行請求(開發工具中的網絡選項卡)。 – grzesiekgs

回答

1

我懷疑是變量auth_header沒有在其中定義do_ajax功能範圍的定義,但它是在你試圖調用do_ajax從範圍界定。這可以解釋爲什麼$.ajax內聯工作,但不通過do_ajax調用。

嘗試改變

function do_ajax(url, data) { 

function do_ajax(url, data, auth_header) { 

,改變

do_ajax('/my_url', { stuff: 'here' }).done(function(response) { 

do_ajax('/my_url', { stuff: 'here' }, auth_header).done(function(response) { 
+0

我的上帝。你也是對的!謝謝! – BaronVonKaneHoffen

-1

試試這個

function do_ajax(url, data) { 
    return $.ajax({ 
     url:url, 
     method: 'GET', 
     data: data, 
     headers: {Authorization: auth_header}, 
     dataType: 'json' 
    }); 
} 

do_ajax('/my_url', { stuff: 'here' }).done(function(response) { 
    console.log('response'); 
}); 
+0

你剛剛使用$ .ajax的方式很糟糕。你以不好的方式傳遞參數。 $ .ajax接受一個JavaScript對象,它將每個對象都傳遞給該對象中的屬性.. –

+0

錯誤。您可以將url作爲第一個參數,並將設置作爲第二個參數傳遞。檢查文檔... http://api.jquery.com/jquery.ajax/ – Archer

+0

@Archer它沒有錯。請仔細閱讀我所說的$ .ajax ....這是錯誤的=====> $ .ajax(url,{options}),這是正確的=====> $ .ajax({options包括URL}) –

相關問題