0
問題:我試圖複製jQuery ajax方法,因爲我在腳本中多次使用XMLHttpRequest。但是,我不認爲將jQuery作爲依賴項是必要的,因爲我只能使用jQuery庫中最多3個方法。爲此,我需要複製的jQuery的Ajax方法的一種好方法,到目前爲止,我這個地步得到,但請參閱下面的代碼示例輸出的解釋:如何複製jQuery ajax方法
function ajax(obj) {
/*
obj = {
type: 'GET',
url: 'my/url/',
success: function (response) {},
error: function (response) {},
isTrue: true
}
*/
var
response = null, // defaults to null
complete = function (resp) {
console.log(resp); // outputs the response
response = resp;
},
error = function (resp) {
response = resp;
},
request = new XMLHttpRequest();
request.open(obj.type || 'GET', obj.url, obj.isTrue || true);
request.onreadystatechange = function (e) {
if (request.readyState === 4) {
if (request.status >= 200 && request.status < 400) {
complete(request.responseText);
} else {
error(request.statusText);
}
}
}
request.send();
return {
done: function (callback) {
callback(response);
}
}
}
後來,當我調用另一個函數的AJAX功能:
var xhr = ajax({
url: 'js/routes.js',
}).done(function (resp) {
console.log(resp); // outputs 'null'
});
響應變量爲空雖然完整的()函數設定的響應變量到AJAX .responseText的值。
問題:如何從請求到AJAX函數返回,這樣我可以在回調函數用它做什麼像我打算中,.done裏面做(對象返回.responseText的價值)該對象的方法?
謝謝!