jquery ajax header和beforesend之间的区别

Dar*_*rum 5 ajax jquery

我正在阅读关于如何设置标题的文档,显然有两种方法是在beforexnd xhr之前,另一种方法是传递带有值的对象标题.他们之间有什么区别?

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
    }
});
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 6

回顾文档,看起来唯一真正的区别(除了headers更简洁和声明)是beforeSend可以覆盖来自的值headers.从headers部分:

标题设置中的值也可以从beforeSend函数中覆盖.

beforeSend也比headersv1.5中添加的更旧.(我假设beforeSend在v1.5之前存在,因为它有关于v1.5中行为如何变化的注释).