Как отправить и получить данные (не formdata) XMLHttpRequest?
Здравствуйте. Если речь идёт о отправке формы, то я всегда использовала вот этот код (он работает, проблем нет):
function send(event, php){ console.log("Отправка запроса"); event.preventDefault ? event.preventDefault() : event.returnValue = false; var req = new XMLHttpRequest(); req.open('POST', php, true); req.onload = function() { if (req.status >= 200 && req.status < 400) { json = JSON.parse(this.response); console.log(json); // ЗДЕСЬ УКАЗЫВАЕМ ДЕЙСТВИЯ В СЛУЧАЕ УСПЕХА ИЛИ НЕУДАЧИ if (json.result == "success") { // Если сообщение отправлено alert("Сообщение отправлено"); } else { // Если произошла ошибка alert("Ошибка. Сообщение не отправлено"); } // Если не удалось связаться с php файлом } else {alert("Ошибка сервера. Номер: "+req.status);}}; // Если не удалось отправить запрос. Стоит блок на хостинге req.onerror = function() {alert("Ошибка отправки запроса");}; req.send(new FormData(event.target)); } Теперь мне нужно отправить не форму, а передать данные первым аргументом. Я попыталась сделать вот так: <div onclick="sendtoCart('malako','tocart.php')">В КОРЗИНУ</div> // ajax function sendtoCart(event, php){ var req = new XMLHttpRequest(); req.open('POST', php, true); req.onload = function() { if (req.status >= 200 && req.status < 400) { json = this.response; console.log("json",json); // Если не удалось связаться с php файлом } else {alert("Ошибка сервера. Номер: "+req.status);}}; // Если не удалось отправить запрос. Стоит блок на хостинге req.onerror = function() {alert("Ошибка отправки запроса");}; req.send(event); } А на сервере: <?php echo json_encode($_POST); ?> Но консоль передаёт мне вот такое: json [] Что я делаю не так? |
nastya97core,
а так? req.send('name=' +event); |
рони,
:( также json [] и так пусто: req.send('123'); И непонятно: то ли не отправляю, то ли не получаю |
если в php написать echo "123"; вместо POST, то в консоли получу 123
|
nastya97core,
Надо кодировку указать (почитай что такое $_POST): req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); |
Rise,
вооооооот. где вы были раньше?) Только что узнала, что нужно было указать заголовки. Указала - всё сработало. Но теперь немного локальная проблема: к примеру, я хочу отправить json. Делаю всё, как указано здесь: https://learn.javascript.ru/xhr-forms#drugie-kodirovki Тупо скопировала и вставила весь кусок кода, изменив только адрес php файла и добавив обработку ответа: xhr.onload = function() { console.log(this.response); } И опять тоже самое! Нету результата, опять пустой ответ [] PHP не может обработать json или что? Нужно каким-то определённым образом обрабатывать json? upd. да, нужно определённым образом обрабатывать json. на сервере это выглядит вот так: $postData = file_get_contents('php://input'); echo $postData; |
Часовой пояс GMT +3, время: 11:38. |