2016-01-26 178 views
2

我正在閱讀關於如何設置頭的文檔,顯然有兩種方法是beforesend xhr,另一種方法是傳遞一個帶有值的對象頭。他們之間有什麼區別?jquery ajax頭和beforesend之間的區別

beforeSend

$.ajax({ 
    cache: false, 
    type: "GET", 
    url: "/", 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader('x-access-token', token); 
    }, 
    success: function(data) { 
     //Do something 
    }, 
    error: function(data) { 
     //Do something 
    } 
}); 

$.ajax({ 
    cache: false, 
    type: "GET", 
    url: "/", 
    headers: { 
     'x-access-token': token 
    }, 
    success: function(data) { 
     //Do something 
    }, 
    error: function(data) { 
     //Do something 
    } 
}); 

回答

4

Reviewing the docs,它看起來像唯一真正的區別(除了headers更加簡潔的聲明)是beforeSend可以覆蓋價值es從headers。來自headers部分:

標題設置中的值也可以在beforeSend函數中被覆蓋。

beforeSend也比headers舊,它在v1.5中增加了。 (我假設beforeSend在v1.5之前就有了,因爲它有關於行爲如何在v1.5中改變的說明)。

+0

謝謝。文檔可能會有點混亂。隨着大多數谷歌搜索說presend使用,但我抱怨它是我無法通過動態標題,所以我想知道它的區別。 – Darkrum

+0

@Darkrum:爲什麼你不能將動態頭傳遞給'beforeSend'? –

+0

你會怎麼做?你需要有一個功能工廠嗎?我不熟悉如何做到這一點。我想要做的只是在我的代碼中有一個ajax函數,可以被所有其他函數用來進行調用並將其傳遞給動態值我知道如何使用標題對象執行此操作,但是如何在beforesend ? – Darkrum