Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как получить ответ сервера на мой запрос используя XMLHttpRequest (https://javascript.ru/forum/events/83288-kak-poluchit-otvet-servera-na-mojj-zapros-ispolzuya-xmlhttprequest.html)

rfnj 10.11.2021 08:39

Как получить ответ сервера на мой запрос используя XMLHttpRequest
 
Если вставить в клнсиль браузера на станице стим, то этот код выставляет 2 предмета по цене 0,03 и запрос проходит, но ответ я не могу получить. xhrCancelBuyOrder.responseText меет какое-то значение но функция это значение не передаёт.
Буду рад любой помощи.

Код:

globalThis.httpPostErrorPause = async function() {
    let httpPostRequest = new Promise(function (resolve, reject) {
        var xhrCancelBuyOrder = new XMLHttpRequest();
        var url = "https://steamcommunity.com/market/createbuyorder/";
        var params = `sessionid=${g_sessionID}&currency=1&appid=753&market_hash_name=326670-Elf Waywatcher (Foil)&price_total=${Math.round(0.03 * 100 * 2)}&quantity=2&billing_state=&save_my_address=0`;
        xhrCancelBuyOrder.open('POST', url, true);
        xhrCancelBuyOrder.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xhrCancelBuyOrder.onreadystatechange = function () {
            if(xhrCancelBuyOrder.readyState == 4 && xhrCancelBuyOrder.status == 200) {
                console.log(xhrCancelBuyOrder.responseText);
                return resolve(this.responseText);
            }
        };
        xhrCancelBuyOrder.onerror = function () {
            reject(new Error("Network Error"));
        };
        xhrCancelBuyOrder.send(params);
    });
};
var val = await globalThis.httpPostErrorPause();
console.log (val);


ksa 10.11.2021 10:15

rfnj, такое (использовать await)
Цитата:

Сообщение от rfnj
var val = await globalThis.httpPostErrorPause();

можно только в async-функциях... ;)

ksa 10.11.2021 10:56

rfnj, т.е., если следовать твоей структуре кода, у тебя должно быть нечто такое...
const test = async function() {
	const http = new Promise((res, rej) => {
		setTimeout(_ => res('Некие данные'), 2000)
	})
	return http
}
async function start() {
	const val = await test()
	alert(val)
}
start()

ksa 10.11.2021 11:00

Хотя вот такой вариант смотрится менее накручено... ;)
const test = function() {
	return new Promise((res, rej) => {
		setTimeout(_ => res('Некие данные'), 2000)
	})
}
async function start() {
	const val = await test()
	alert(val)
}
start()

rfnj 10.11.2021 11:46

Большое Спасибо

voraa 10.11.2021 11:50

Цитата:

Сообщение от ksa
можно только в async-функциях...

В ES модулях теперь можно без функций.
Ну Chromium последних можно.


Часовой пояс GMT +3, время: 04:33.