2016-01-26 4 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, так как он имеет примечание о том, как поведение изменилось с версии 1.5).

+0

спасибо. Док может немного запутать. Наряду с большинством поисковых запросов Google, использующих beforesend, но моя проблема с ним заключалась в том, что я не мог передавать динамические заголовки, поэтому я хотел знать разницу. – Darkrum

+0

@Darkrum: Почему вы не можете передавать динамические заголовки в 'beforeSend'? –

+0

Как вы это сделаете? Вам нужно иметь фабрику функций? Я не знаком с тем, как это сделать. То, что я пытаюсь сделать, - это всего лишь 1 функция ajax в моем коде, которая может использоваться любой другой функцией для совершения вызовов и передачи ее динамических значений. Я знаю, как это сделать с объектом заголовков, но как бы вы это сделали с beforesend ? – Darkrum

Смежные вопросы