Отправить объект в формате JSON и преобразовать его обратно - PullRequest
0 голосов
/ 27 марта 2019

Я попытался отправить эту строку в php-файл и преобразовать ее обратно.

$htmlparts= '{"footer.html" : "<div id="footer" class="tpl_area edtr_element" contenteditable="true"><footer class="container" id="1194">...</footer></div>","page_index.html" : "<div id="pagecontent" class="tpl_area edtr_element" contenteditable="true">...</div>","header.html" : "<div id="header" class="tpl_area edtr_element" contenteditable="true"><header id="1094"><nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark" data-editor-id="1095" id="1095">...  </nav>
</header></div>" }';

Использовал следующий метод для вызова ajax:

data={'htmlparts': htmlparts, ...somethings more...}

$.ajax({
            url: url,
            method: 'POST',
            data: data,
            dataType:'json',
...

В консоли я вижу, что "htmlparts" вызывается правильно:

В php (проект codeigniter) я пытался получить этот контент

$test=json_decode($_POST['htmlparts']);
                echo"<pre>";
                print_r($test);
                echo"<pre>";

но в результате я ничего не получаю (только )

Что я сделал не так?

Ответы [ 3 ]

0 голосов
/ 27 марта 2019

$_POST будет пустым массивом в вашем случае. Попробуйте использовать это

$decoded = json_decode(trim(file_get_contents("php://input")), true);

$decoded будет содержать проанализированный JSON, полученный от внешнего интерфейса.

0 голосов
/ 27 марта 2019

Чтобы отправить json в вашем запросе ajax post, ваш запрос требует contentType, а данные должны быть закодированы в json как:

data={'htmlparts': htmlparts, ...somethings more...}

$.ajax({
  url: url,
  method: 'POST',
  // notice the changes here
  contentType: 'application/json'
  data: JSON.stringify(data),
...
0 голосов
/ 27 марта 2019

Вам необходимо настроить объект json в следующем формате:

data = {
  "div": "something",
  "span": "something"
}

Также вам необходимо преобразовать этот объект в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...