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

285
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

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

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

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

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

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

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

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

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

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

286