ajax 数据请求(一)同域
参考:http://www.css88.com/jqapi-1.9/jQuery.ajax/
http://www.cnblogs.com/haitao-fan/p/3908973.html
1、常用格式化
$.ajax({
url:url,
type:'POST',
method :'POST',//jq 1.9 添加属性 ,type 的别名,1.9之前用 type
async:true,//是否异步处理,同步会锁定浏览器
crossDomain:false,//是否跨域
dataType:"json",//数据类型
data:data,//发送的请求数据
beforeSend:function(){
//发送前执行的操作,一般用于验证,返回false 时终止请求
},
success:function(data,status,xhr){
//请求成功的事件
},
error:function(xhr){
//请求失败的事件
alert("错误提示: " + xhr.status + " " + xhr.statusText);
},
complete:function(jqXHR,textStatus){
//不论成功与否都执行的回调方法
}
});
2、参数
dataType 数据类型
default: Intelligent Guess (xml, json, script, or html)
data 的参数类型以下几种
- 文本类型
- JSON字符串
- JSON对象
- JSON数组
- FormData对象
- 其他类型,比如html, 比如XML,只要设置要contentType即可,类似JSON类型
文本类型:
如:data = "uname=myname&mobileIpt=110" ;
JSON 字符串:(注意与json 对象区分)
如:data = "{uname:'myname',mobileIpt:'110','}";
JSON 对象:
如:data = {"uname":"myname","mobilelpt":"110"};
JSON 数组:
如:data = [
{"name":"uname","value":"myname"},
{"name":"mobileIpt","value":"110"},
];
var arr = $('#form').serializeArray() 序列化数组返回的是JSON 数组,可利用$.param(arr) 来解析json 数组,解析后为文本格式 "uname=myname&mobileIpt=110".
附:可通过 $('#form').serialize() 序列化方法 直接提取表单数据,生成文本格式 "uname=myname&mobileIpt=110"
在通过反序列化方法unserialize(文本格式) 的到一个json对象,这样就可以取出表单中的某些数据
FormatData对象:
FormatData对象可以更灵活方便的发送表单数据,因为可以独立于表单使用。
可通过Ajax上传文件。通过这种方式,可以非常方便的进行表单提交,直接表单转换成FormData对象即可。
//通过document.querySelector(".form")获取匹配的第一个表单 //想要获取所有匹配的元素用document.querySelectorAll(".form") var fd = new FormData($("#form"));
//额外添加参数 fd.append("CustomField", "This is some extra data"); $.ajax({ url: url, type: "POST", data: fd, processData: false, // 不处理数据 contentType: false // 不设置内容类型 });
提示:若重服务器中获取到的是json 数组的话,需要用$.parseJSON()转为json对象来处理