我自己封装了下ajax,但是发送post请求时,与jq发送post请求不一样。
这个是用jq发的请求:
这个是自己封装的:
我想知道是因为什么原因导致的?怎么设置成和jq一样?
下面是代码:
function ajax(options){
var xmlhttp,data;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
var method = (options.method || 'GET').toUpperCase(),
url = options.url,
async = options.async || 'false';
var onReady = function(callback){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState === 4 && xmlhttp.status === 200){
callback(JSON.parse(xmlhttp.responseText));
}
}
}
if(method === 'GET'){
url += '?';
for (var index in options.data) {
if (options.data.hasOwnProperty(index)) {
url += index + '=' + encodeURI(encodeURI(options.data[index])) + '&';
}
}
url = url.slice(0,-1);
xmlhttp.open(method,url,async);
onReady(options.callback);
xmlhttp.send();
}else{
data = new FormData();
for (var index in options.data) {
if (options.data.hasOwnProperty(index)) {
data.append(index,encodeURI(encodeURI(options.data[index])));
}
}
xmlhttp.open(method,url,async);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
onReady(options.callback);
xmlhttp.send(data);
}
}
这是我自己封装请求头: