Проблемы с передачей JSON данных по Ajax

301
01 августа 2017, 18:17

Если сразу к делу, то JS:

text = $("#loadmore").val();
jsonRequest = JSON.stringify({"requestData": text});
console.log(jsonRequest); //возвращает {"requestData":"abc"}
$.ajax({
  url: '/index.php',
  type: 'POST',
  data: jsonRequest,
  contentType: "application/json",
  cache: false,
  success: function(data, xhr)
  {
    console.log(JSON.parse(data));
  }

Кодирую данные в JSON и передаю их на сервер по POST. На сервере принимаю следующим образом, использую Smarty:

if (!empty($_POST)) {
    //$request = json_decode($_POST);
    //$se->assign("test", $request); <- попытки работать с реальными данными
    $se->assign("output", 'text'); //<- пробую просто передать статические JSON данные
}
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    $ajax_request = true;
}
$se->display($ajax_request ? 'output.tpl' : 'example.tpl');

Так как проверка на AJAX-запрос прошла запускается output.tpl:

{$output|@json_encode}

Результатом выходит:

console.log(JSON.parse(data)); //null

Обычные текстовые данные я уже передавал на сервер, все работало. Я где-то накосячил с заголовками, явно, где-то не кодируются JSON данные и все плывет... Но за 2 часа поисков я не понял тольком ничего, может кто-то подскажет?

Спасибо за внимание.

READ ALSO
запуск php скрипта по кнопке

запуск php скрипта по кнопке

ЗдравствуйтеЕсть php скрипт в папке, update

349
Как проверить отправлен ли POST ajax

Как проверить отправлен ли POST ajax

Есть форма которая отправляется POST ajaxКак проверить отправилась ли форма по jq

351
Как загрузить файл на компьютер - URLDownloadToFile

Как загрузить файл на компьютер - URLDownloadToFile

Пробую загрузить файл на диск C:\\

335
Оптимизация по времени и памяти

Оптимизация по времени и памяти

Задача: Для положительного целого числа n определим функцию f:

298