У меня есть модуль AMD, который выполняет основную проводку Ajax. Он работает, он будет отправлять на мой сервер api, однако событие onreadystatechange просто не срабатывает. Вы можете увидеть, что я делаю неправильно? ...XHR onreadystatechange никогда не срабатывает
define(['constants'], function (cons) {
'use strict';
function _getHTTPObject() {
var http = false;
// Use IE's ActiveX items to load the file.
if (typeof ActiveXObject !== 'undefined') {
try {http = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {
try {http = new ActiveXObject("Microsoft.XMLHTTP");}
catch (E) {http = false;}
}
// If ActiveX is not available, use the XMLHttpRequest of Firefox/Mozilla etc. to load the document.
} else if (XMLHttpRequest) {
try {http = new XMLHttpRequest();}
catch (e) {http = false;}
}
return http;
}
function _send (url, params, cbSuccess, cbError) {
var http = _getHTTPObject();
http.open("POST", url, true);
// Send the proper header infomation along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function (cbSuccess, cbError) {
if (http.readyState === 4 && http.status === 200) {
if (console) { console.log('xhrPost response:', http.responseText); }
}
}
http.send(params);
}
return {
send: _send
};
});
Примечания: Вы просто не нужен '_getHTTPObject' если вы не поддерживаете действительно удивительно устаревшие браузеры, как IE6. –
Это не проблема, но это проблема * next *: вы не хотите объявлять 'cbSuccess' и' cbError' в своей подписи обработчика 'onreadystatechange'. –
Я думал об этом. Однако я хочу добавить способ вернуть успех или ошибку. Итак, вы не думаете, что сигнатура функции вызывает событие? – Locohost