JS JSON получил с ошибкой дешифрования на PHP - PullRequest
0 голосов
/ 03 мая 2019

Я отправил строку JSON из Javascript и получил ее на PHP, однако мой PHP-скрипт не получает ее как JSON.

JS генерирует этот вывод:

{"id_own":"Metztli Alonso","tick":"123456","ticket":"TID","comm":"test viernes nnuevo formato php","NQueues":"AMX-GI-Administracion-Interna","NCauses":"Capacitacion"}

НоPHP получает это:

id_own=Metztli+Alonso&tick=123456&ticket=TID&NQueues=AMX-GI-Administracion-Interna&NCauses=Capacitacion&comm=test+viernes+nnuevo+formato+php

JS

//var obj = { id_own: f.id_own.value, tick: f.Ticket.value, ticket: TTYPE, comm: f.comments.value, NQueues: f.que.value, NCauses: f.cau.value };

//Sample data
var obj = { id_own: "Metztli Alonso", tick: "123456", ticket: "TID", comm: "test viernes nnuevo formato php", NQueues: "AMX-GI-Administracion-Interna", NCauses: "Capacitacion" };

const myJSON = JSON.stringify(obj);

alert(myJSON);

const xhr = new XMLHttpRequest();
xhr.open("POST","http://*****/dev_insert.php");
xhr.setRequestHeader("Content-Type","application/json");
xhr.send(myJSON);

PHP

<?php
echo "<br>";
echo "mensaje de js";
$requestPayload = file_get_contents("php://input");
var_dump ($requestPayload);

1 Ответ

0 голосов
/ 06 мая 2019

Код, который вы предоставили, не будет этого делать.

Симптомы, которые вы описываете, указывают на то, что вы собираете данные из формы и запускаете JavaScript при отправке формы, но не отменяете стандартное поведение события отправки.

Следовательно:

  1. Событие отправки срабатывает
  2. JavaScript запускается и инициирует Ajax-запрос
  3. JavaScript завершается
  4. Форма отправляет ... и URL кодирует данные в ней, как вы описываете
  5. Запрос Ajax отменен, поскольку среда, в которой он работает, исчезает
  6. Браузер отображает ответ на запрос формы

Необходимо запретить поведение отправки формы по умолчанию:

form.addEventListener("submit", event => {
    event.preventDefault();
    // Then do everything you were already doing
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...