Я хотел бы знать, как использовать XMLHttpRequest для получения ответа от ws.
Я пробовал этот код, чтобы опубликовать свою юдоль:
private prepareSave(): any {
const endpoint = (Api.getUrl(Api.URLS.createContrat));
let XHR = new XMLHttpRequest();
const input: FormData = new FormData();
input.append('contratedate', this.addContratForm.get('contratedate').value);
input.append('contratdesc', this.addContratForm.get('contratdesc').value);
input.append('unit_price', this.addContratForm.get('unit_price').value);
input.append('files', this.addContratForm.get('files').value);
input.append('token', this.auth.getCurrentUser().token);
XHR.addEventListener('load', function (event) {
alert('Yeah! Data sent and response loaded.');
});
XHR.addEventListener('error', function (event) {
alert('Oups! Something went wrong.');
});
XHR.open('POST', endpoint);
console.info(input)
XHR.send(input)
console.info(XHR) // show me XMLHttpRequest.
}
Мой ответ:
{
"StatusCode":0,
"StatusMessage":"OK",
"StatusDescription":
[
{
"error_no":0,
"error_msg":"",
"sqlerrorno":0,
"sqlerror":"",
"lastid":"11E84DE6579F6599A4FBFA163EBBBC1D"}
]
}
Я пробовал что-то вроде этого кода, но без функции:
if (XHR.response.StatusCode === 0) {
Materialize.toast('Contrat update successfully', 4000);
this.router.navigate(['/main/contrats']);
return true;
}
Подскажите, пожалуйста, какое-нибудь решение? Спасибо
Работайте правильно этот код, только я хочу отображать в фоновом режиме StatusMessage. Как его получить?
Ты пробовал: XHR.StatusCode вместо XHR.response.StatusCode? потому что, как я вижу из вашего зарегистрированного объекта, нет атрибута ответа ...
Попробуйте этот код:
private prepareSave(): any {
const endpoint = (Api.getUrl(Api.URLS.createContrat));
let XHR = new XMLHttpRequest();
const input: FormData = new FormData();
input.append('contratedate', this.addContratForm.get('contratedate').value);
input.append('contratdesc', this.addContratForm.get('contratdesc').value);
input.append('unit_price', this.addContratForm.get('unit_price').value);
input.append('files', this.addContratForm.get('files').value);
input.append('token', this.auth.getCurrentUser().token);
XHR.addEventListener('load', function (event) {
alert('Yeah! Data sent and response loaded.');
});
XHR.addEventListener('error', function (event) {
alert('Oups! Something went wrong.');
});
XHR.open('POST', endpoint);
console.info(input)
XHR.send(input)
XHR.onload = function () {
let jsonResponse = JSON.parse(XHR.responseText);
if (jsonResponse.StatusCode === 0) {
Materialize.toast('Contrat saved successfully', 4000);
window.location.href = '/main/contrats';
return true;
}
}
Что не так с вашим кодом? Кроме того, почему вы не используете встроенный в Angulars класс HttpClient?