欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

$.ajax()参数详解

程序员文章站 2022-03-12 19:56:08
来自于《锋利的jQuery(第2版)》。 内容类型发送请求头,告诉服务器什么样的响应会接受返回。 如果accepts设置需要修改,推荐在$.ajaxSetup()方法中做一次。 默认设置下(默认为true),所有请求均为异步请求。 如果需要发送同步请求,请将此选项设置为false。 跨域请求和dat ......

来自于《锋利的jquery(第2版)》。

 

参数 类型 说明
accepts map

内容类型发送请求头,告诉服务器什么样的响应会接受返回。

如果accepts设置需要修改,推荐在$.ajaxsetup()方法中做一次。

async boolean

默认设置下(默认为true),所有请求均为异步请求。

如果需要发送同步请求,请将此选项设置为false。

跨域请求和datatype: "jsonp"请求不支持同步操作。

注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。

beforesend() function

发送请求前可修改xmlhttprequest对象的函数,例如添加自定义http头。

在beforesend中如果返回false可以取消本次ajax请求。

xmlhttprequest对象是唯一的参数。

function (xmlhttprequest) {

     this; // 调用本次ajax请求时传递的options参数

}

在jquery 1.5,beforesend选项将被访问,不管请求的类型。

cache boolean

默认为true(当datatype为“script”和“jsonp”时,则默认为false)。

设置为false将不会从浏览器缓存中加载请求信息。

complete() function

请求完成后回调函数(请求成功或失败时均调用)。

参数:xmlhttprequest对象和一个描述成功请求类型的字符串。

function (xmlhttprequest, textstatus) {

     this; // 调用本次ajax请求时传递的options参数

}

在jquery 1.5,complete设置可以接受一个函数的数组。

contents map 一个以“{字符串:正则表达式}”配对的对象,用来确定jquery将如何解析响应,给定其内容类型。
contenttype string

当发送信息至服务器时,内容编码类型默认为“application/x-www-form-urlencoded”。

该默认值适合大多数应用场合。

context object

这个对象用于设置ajax相关回调函数的上下文。

也就是说,让回调函数内this指向这个对象(如果不设定这个参数,那么this就指向调用本次ajax请求时传递的options参数)。

converters map

一个数据类型对数据类型转换器的对象。

每个转换器的值是一个函数,返回相应的转化值。

crossdomain  

同域请求为false,跨域请求为true。

如果你想强制跨域请求(如jsonp形式)同一域,设置crossdomain为true。

data object/string

发送到服务器的数据。

如果不是字符串,将自动转换为字符串格式。

get请求中将附加在url后。

想要防止这种自动转换,可以查看processdata选项。

对象必须为key/value格式,例如{foo1: "bar1", foo2: "bar2"}转换为&foo1=bar1&foo2=bar2。

如果是数组,jquery将自动为不同值对应同一个名称。

例如{foo: ["bar1", "bar2"]}转换为&foo=bar1&foo=bar2。

datafilter() function

给ajax返回的原始数据进行处理的函数。

提供data和type两个参数。

data是ajax返回的原始数据,type是调用jquery.ajax时提供的datatype参数。

函数返回的值将由jquery进一步处理。

function (data, type) {

    // 返回处理后的数据

    return data;

}

datatype string

预期服务器返回的数据类型。

如果不指定,jquery将自动根据http包mime信息返回responsexml或responsetext,并作为回调函数参数传递。

可用的类型如下:

xml:返回xml文档,可用jquery处理。

html:返回纯文本html信息,包含的script标签会在插入dom时执行。

script:返回纯文本javascript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。

json:返回json数据。

jsonp:jsonp格式。使用jsonp形式调用函数时,例如myurl?callback=?,jquery将自动替换后一个“?”为正确的函数名,以执行回调函数。

error() function

请求失败时被调用的函数。

这个函数有3个参数,即xmlhttprequest对象、错误信息和捕获的错误对象(可选)。

function (xmlhttprequest, textstatus, errorthrown) {

    // 通常情况下textstatus和errorthown

    // 只有其中一个包含信息

    this; // 调用本次ajax请求时传递的options参数

}

global boolean

是否触发全局ajax事件,默认为true。

设置为false将不会触发全局ajax事件,例如ajaxstart和ajaxstop等可用于控制各种ajax事件。

headers map

一个额外的“{键:值}”对映射到请求一起发送。

此设置被设置之前beforesend函数被调用;因此,消息头中的值可以在覆盖beforesend函数范围内的任何设置。

ifmodified boolean

默认:false。

仅在服务器数据改变时获取数据。

使用http包last-modified头信息判断。

在jquery1.4中,它也会检查服务器指定的‘etag’来确定数据没有被修改过。

islocal boolean

允许当前环境被认定为“本地”(如文件系统),即使jquery默认情况下不会承认它。

以下协议目前工人为本地:file,*-extension,和widget。

如果islocal设置需要修改,建议在$.ajaxsetup()方法中做。

jsonp string

在一个jsonp请求中重写回调函数的名字。

这个值用来替代在“callback=?”这种get或post请求中url参数里的“callback”部分,比如{jsonp:"onjsonpload"}会导致将“onjsonpload=?”传给服务器。

在jquery 1.5,设置jsonp选项为false阻止了jquery从加入“?callback”字符串的url或试图使用“=?”转换。

在这种情况下,你也应该明确设置jsonpcallback设置。

例如:{jsonp:false, jsonpcallback:"callbackname"}。

jsonpcallback string/function

为jsonp请求指定一个回调函数名。

这个值将用来取代jquery自动生成的随机函数名。

这主要用来让jquery生成独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。

你也可以在想让浏览器缓存get请求的时候,指定这个回调函数名。

在jquery 1.5,你也可以使用一个函数值该设置,在这种情况下jsonpcallback的值设置到该函数的返回值。

mimetype string 一个mime类型用来覆盖xhr的mime类型。
password string 用于响应http访问认证请求的密码。
processdata boolean

默认为true。

默认情况下,发送的数据将被装换为对象(从技术角度来讲并非字符串)以配合默认内容类型“application/x-www-form-urlencoded”。

如果要发送dom树信息或者其他不希望转换的信息,请设置为false。

scriptcharset string

只有当请求时datatype为“jsonp”或者“script”,并且type是get时才会用于强制修改字符集(charset)。

通常在本地和远程的内容编码不同时使用。

statuscode map

一组数值的http代码和函数对象,当响应调用了相应的代码。

例如,如果响应状态是404,将触发以下警报:

$.ajax({

    statuscode: {

        404: function() {

            alert('page not found');

        }

    }

});

如果请求成功,状态代码函数作为回调的成功相同的参数;如果在一个错误的结果,他们采取了相同的参数error回调。

success() function

请求成功后的回调函数。

这个函数传递3个参数:

从服务器返回的数据,并根据datatype参数进行处理后的数据,一个描述状态的字符串,还有jqxhr对象。

timeout number

设置请求超时时间(毫秒)。

此设置将覆盖$.ajaxsetup()方法的全局设置。

traditional boolean

如果你想要用传统的方式来序列化数据,那么久设置为true。

请参考工具分类下面的jquery.param方法。

type string

请求方式(post或get),默认为get。

注意,其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。

url string 发送请求的地址,默认为当前页地址。
username string 用于响应http访问认证请求的用户名。
xhr function

回调创建xmlhttprequest对象。

当可用时默认为activexobject(ie)中,否则为xmlhttprequest。

xhrfields map

一对“文件名-文件值”在本机设置xhr对象。

例如,如果需要的话,你可以用它来设置withcredentials为true的跨域请求。