#javascript #ajax #xmlhttprequest #prototypejs
Вопрос:
Что я делаю -> удаление prototype.js из моего старого проекта.
в какой-то момент я столкнулся с этим:
request = new Ajax.Request(hostUrl "somethings/index/somethings", {
method: "post",
parameters: {'product-id': productId},
onComplete: function(transport) {
console.log(transport);
console.log(typeof transport);
}
});
console.log(транспорт) здесь выводит объект с фактическими данными, с которыми я могу работать.
Раздел Fetch/XHR (инструменты разработчика) показывает, что статус равен 200, и я вижу ответ.
вывод на консоль выглядит так
klass {request: klass, transport: XMLHttpRequest, readyState: 4, status: 200, statusText: "OK", …}
Я подумал, что перестроить это должно быть просто. Я сделал это:
var ajx = new XMLHttpRequest();
var params = JSON.stringify({'product-id': productId});
var url = hostUrl "somethings/index/somethings";
console.log(params);
console.log(typeof params);
ajx.open("POST", url, true);
ajx.onreadystatechange = function (transport) {
if (ajx.readyState == 4) {
if (ajx.status == 200) {
console.log(transport);
console.log(typeof transport);
}
else if (ajx.status == 400) {
throw new Error('error 400');
}
else {
throw new Error('not 400, but still an error');
}
}
};
ajx.send(params);
и тут я вижу нечто странное…
вывод console.log(транспорт) выглядит как объект события:
Event {isTrusted: true, type: "readystatechange", target: XMLHttpRequest, currentTarget: XMLHttpRequest, eventPhase: 2, …}
Раздел Fetch/XHR (инструменты разработчика) показывает, что статус равен 200, но на вкладке «Ответ» ничего нет. Никаких ошибок в консоли.
Может быть, кто-нибудь сможет указать, в чем проблема..