ajax参数详解
去面试的时候,记得有位"猿老",让我好好看一下ajax,我觉得还真有必要了;
我看的是jQ中ajax的参数;
首先是ajax的对应的参数及作用;
1.type
请求方式:在我印象中,请求的方式就两种,也是我们常用的那两种就是 GET PSOT:在我们进行后台数据请求的时候;我们用的方式就是GET,当我们要把要将前端的一些参数,传给自己的后台人员的时候用的更多的就是POST方式了; 他们的区别具体有哪些呢;自己是首先进行了一些总结,并且在网上搬了"砖"; 使用GET请求的时候,我们发请求的时候,参数在URL中显示, POST的方式,是不会显示的,这也导致了,在使用GET的时候,请求发送的数据量比较小,一般大小在1KB左右;这些数据会在客服端的浏览器中缓存起来,别人在你的浏览记录张便可以得到相应的数据;也可以说保密性还是比较差的; 相反;POST就不会了;在使用POST的时候,浏览器把各个表单字段元素及其数据作为HTTP消息的实习内容发给Web服务器,而不是作为URL参数; 另外还有put 和 delete 方式;这两种方式也可以用但是只有部分浏览器支持;
2.URL
就是请求对应的地址了;
3.timeout
请求超时用到属性;(当时,单一提了一下这个属性); 当网络不佳的时候,或者后台运行运行比较慢的时候;如果服务器超过设置的时间的话,就会进入error的回调函数; 关于timeout的一些事项; 当时timeout:0;这就代表永不超时; 如果你把超时时间写的比较大的情况下,这样也就会导致数据的加载变慢;
下面的代码详细的讲解说明了 ajaxSetup函数;
//设置AJAX的全局默认选项
$.ajaxSetup( { url: "/index.html" , // 默认URL aysnc: false , // 默认同步加载 type: "POST" , // 默认使用POST方式 headers: { // 默认添加请求头 "Author": "CodePlayer" , "Powered-By": "CodePlayer" } , error: function(jqXHR, textStatus, errorMsg){ // 出错时默认的处理函数 // jqXHR 是经过jQuery封装的XMLHttpRequest对象 // textStatus 可能为: null、"timeout"、"error"、"abort"或"parsererror" // errorMsg 可能为: "Not Found"、"Internal Server Error"等 // 提示形如:发送AJAX请求到"/index.html"时出错[404]:Not Found alert( '发送AJAX请求到"' + this.url + '"时出错[' + jqXHR.status + ']:' + errorMsg ); } } );
未设置任何参数,但url、async、type、headers、error等参数的默认值均已被$.ajaxSetup()更改(如上)
$.ajax( )
设置了url、type、success、error,就使用自己设置的参数值
但async、headers等参数的默认值已被$.ajaxSetup()更改
$.ajax( { url: "myurl.php?action=list" , type: "GET" , success: function( data, textStatus, jqXHR ){ alert("返回数据:" + data); } , error: function(jqXHR, textStatus, errorMsg){ alert("自己的error!"); } }); // 上述$.ajaxSetup()的默认设置对$.get()、$.post()、load()、$.getJSON()、$.getScript()等AJAX函数也生效 // 因为这些函数也是在内部调用$.ajax()函数来实现的,只不过它们在内部都设置了一些参数 // $.get()在内部调用$.ajax()时已设置type为"GET",因此仍然使用GET方式。 // 但url、async、headers、error等参数的默认值已被$.ajaxSetup()更改 $.get( ); // $.post()在内部调用$.ajax()时已设置type为"POST",因此仍然使用POST方式。 // url也被设置为"user/action.php?method=addUser" // 但async、headers、error等参数的默认值已被$.ajaxSetup()更改 $.post( "user/action.php?method=addUser" );
4:async:
请求是否异步,默认为true,所有请求均为异步请求,如果需要同步请求,就更改默认值为false;同步请求的时候,浏览器会停止其他代码的执行;用户的其他操作,也要等待这个请求结束才能开始执行;
5.cache
个人总结就是;是否允许从浏览器缓存中读取数据;
6.data
要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看processData(防止自动转换)选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
7:dataType
xml:返回XML文档,可用JQuery处理; html:返回纯文本信息;包含的script的标签会插入DOM时执行; script:返回纯文本的javascript代码,不会自动缓存,除非设置了cache参数.注意在远程请求的时,所有post请求都将返回get请求; json:返回json; jsonp:JSONP格式;使用SON形式调用函数时;例如myurl?callback=?,JQuery将自动替换后一个?为正确的函数名,以执行回调函数;
8:success
请求成功后调用的回调函数,有两个参数。 (1)由服务器返回,并根据dataType参数进行处理后的数据。 (2)描述状态的字符串。 function(data, textStatus){ //data可能是xmlDoc、jsonObj、html、text等等 this; //调用本次ajax请求时传递的options参数 }
9:error
请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下: function(XMLHttpRequest, textStatus, errorThrown){ //通常情况下textStatus和errorThrown只有其中一个包含信息 this; //调用本次ajax请求时传递的options参数 }
10:global:
要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件。
11:ifModified
要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。
12:jsonp
要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,例如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。
13:username
要求为String类型的参数,用于响应HTTP访问认证请求的用户名。
14:password
要求为String类型的参数,用于响应HTTP访问认证请求的密码。