Я хочу отправить данные методом POST на php-сервер, а затем получить данные с сервера, используя метод GET на этот раз (я полагаю).
Вот JS:
функция send ()
function send(leURL, laValeur) {
try {
return new Promise(function(resolve, reject) {
var req = new XMLHttpRequest();
req.open('POST', leURL);
req.setRequestHeader("Content-Type", "application/json");
req.onreadystatechange = function() {
if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
document.getElementById("result").innerHTML = "Ok!";
}
};
jmail = JSON.stringify(laValeur);
req.send(jmail);
resolve("true");
});
}
catch (err) {
window.alert("erreur 2");
}
}
функция recieve ()
function recieve(laURL) {
try {
var reqt = new XMLHttpRequest();
reqt.open('GET', laURL);
reqt.onreadystatechange = function(e) {
if (this.readyState == XMLHttpRequest.DONE && this.status = 200) {
var rep = JSON.parse(this.responseText);
try {
window.alert(rep);
}
catch (e) {
window.alert("erreur 4");
}
}
}
reqt.send();
//return rep;
}
catch (e) {
window.alert("erreur 3");
}
}
вызовы функции:
//there's a form in the HTML (id="form")
document.getElementById("form").addEventListener('submit', function(evt) {
evt.preventDefault();
send(url, mail)
.then(recieve(url));
});
Старая функция recieve () (для тестирования):
function recieve(laURL) {
window.alert(laURL);
}
Итак, пока я использовал старую функцию recieve (), у меня была send () print "Ok!"и recieve () создает предупреждение, которое заставляет меня думать, что оно работает нормально.Но теперь, когда я использую новую функцию recieve (), страница просто перезагружается.(Блок захвата даже не отображается!)
Вот PHP:
<?php
if (!empty($_POST)) {
$var = //do something with the data, involving $_POST
echo $var;
}
else {
echo "Hello, there !";
}
?>
Поскольку $ var был сгенерирован из первого HTTP-запроса (POST), как я могу получить его в javascript??
Я подозреваю, что ошибка вызвана либо php, либо из-за использования двух запросов XMLHttp (но я не знаю, как мне это сделать, используя только один HTTP-запрос)