Моя проблема в чем-то похожа на cakephp, jquery, .ajax (), dataType: json , но мои наблюдения немного отличаются.
Я работаю над проектом Cake PHP.Рассмотрим подмодуль group_assoc
модуля opstools
.Итак, внутри opstools_controller.php
есть эта функция group_assoc()
, которая вызывается с помощью вызова ajax для обновления ассоциаций групп.
Мой пост Ajax выглядит так -
$.post( url,
function(data)
{
if(data)
{
alert(data.success); //alerts -> undefined
alert(data); //alerts -> {"success":true} or {"success":false}
if(data.success)
{
//does not work
}
}
}, "json");
И внутри opstools_controller.php
У меня есть -
function group_assoc()
{
...
...
//some code
...
...
$success //contains true or false - depending on previous logic
echo json_encode(array("success" => $success));
}
Итак, внутри функции обработчика ответа Ajax (вчасть публикации ajax), я получаю строку вроде {"success":false}
.
Как мне решить эту проблему.Я помню, как использовал аналогичные сообщения Ajax и отвечал с помощью json_encode, который прекрасно работал в предыдущем проекте с Core PHP (без Cake PHP).В чем может быть проблема здесь?Есть указатели?
Обновление
Нужно ли явно устанавливать какой-либо заголовок?Зачем это нужно?Где проверить, установлено ли, что мы возвращаем текст.Я попытался поместить header("HTTP/1.1 200 OK");
перед эхо-частью, как это делается в существующем коде - аналогичные функции обработчика Ajax.
Кроме того, я установил $this->autoRender = false;
в своем модуле.