我正在編寫自己的小型庫,因爲jQuery並沒有爲我剪切它,而且老實說我寧願不要,因爲我寧願知道我的代碼到底發生了什麼!無論如何,我正在嘗試編寫一個ajax函數,它的寫法像這樣_$.ajax()
但問題是我沒有得到我需要的功能,因爲它說CORS是無效的,但我知道它應該是當我使用$.get || $.post
它工作正常...使用我自己的庫的Ajax功能
功能:
var ajax = {
url: null,
type: "GET",
cache: null,
data: null,
content: null,
state: 0,
xhr: null,
timeout:0,
responseType: "",
done:function(data){
//not sure on here
},
init: function() {
var ids = ['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
if (window.XMLHttpRequest) {
ajax.xhr = new XMLHttpRequest();
} else {
for (var i = 0; i < ids.length; i++) {
try {
ajax.xhr = new ActiveXObject(ids[i]);
break;
} catch (e) {
throw e;
}
}
}
ajax.xhr.open(ajax.type, ajax.url, true);
ajax.xhr.setRequestHeader("Content-type", ajax.content !== null ? ajax.content : "application/x-www-form-urlencoded");
if(ajax.cache !== null){
ajax.xhr.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
}
ajax.process();
},
process: function() {
ajax.xhr.onreadystatechange = function() {
if (ajax.xhr.readyState == 4) {
if(ajax.xhr.status == 200){
if(typeof ajax.done != 'undefined'){
ajax.done(ajax.xhr.responseText);
//old way was ajax.completion = ajax.xhr.responseText
//then in the ajax.ajax it would return(ajax.completion);
}else{
return false;
}
}
}
};
if (ajax.type.toUpperCase() === 'GET') {
ajax.xhr.send();
ajax.state = 1;
} else if (ajax.type.toUpperCase() === 'POST') {
ajax.xhr.send(data);
ajax.state = 1;
}
return (ajax.response);
},
ajax: function (opts) {
ajax.url = opts.url,
ajax.type = opts.type !== undefined ? opts.type : ajax.type,
ajax.cache = opts.cache,
ajax.content = opts.content,
ajax.data = opts.data;
ajax.responseType = opts.responseType ? opts.responseType : ajax.responseType;
ajax.timeout = opts.timeout ? opts.timeout : ajax.timeout;
opts.done(ajax.done);
ajax.init();
}
};
編輯 我已經更新了我的代碼,以user3165879答案提供的功能。我得到了xhr.response文本,但由於某種原因,每當我嘗試使用alert``console
或return
時,它只是說未定義。
我希望能夠給我寫的代碼像這樣:
var content;
_$.ajax({
type:"GET",
url:"whatever.url.com",
done:function(data){
content+= data;
}
});
正如你可以看到我沒有一個真正的done
我的代碼裏面,因爲我還不能肯定從哪裏開始,從來沒有真正完全瞭解ajax的過程。找不到任何明確的文檔。
你是什麼意思與CORS錯誤?確切的錯誤信息總是更有幫助。是否像'否'Access-Control-Allow-Origin'標題出現在請求的資源上。原因'http://example.tld'因此不被允許訪問。 ' –
是的,我很抱歉沒有指定。 – EasyBB