PHP эхо json_encode для jQuery не работает? - PullRequest
1 голос
/ 07 августа 2011

Я разрабатывал сайт на своем компьютере и смог получать запросы AJAX с помощью jQuery, который работал безболезненно. Однако на рабочем сервере возникают проблемы.

Вот как контроллер CodeIgniter, который я имею, возвращает результат:

# Return that everything worked.
$return = array('result' => 'success', 'data' => $item);
echo json_encode($return);

А это пример кода jQuery:

$.post("../../../list/vote/", { 'item_id' : item_id, 'value' : 0, 'action' : 'delete' },
function(data) {
    if(data.result || !data.result) {
        if(votes == null) votes = 0;
        $(button).children('strong').text(--votes);
        $(button).attr('name', '').removeClass('vote_cast');
        $(button).parent('.meta').attr('name', '');
    }
}, "json");

Проблема в том, что PHP возвращает статус 200 OK, но в Firebug ответ не отображается. Поскольку ничего не возвращается, jQuery говорит, что данные нулевые.

Я использую MAMP локально (PHP / 5.3.5) и PHP / 5.3.2-1ubuntu4.9 на сервере. Он работает локально, но не на сервере. Что может быть не так?

РЕДАКТИРОВАТЬ: Дополнительная информация. Это происходит для каждого запроса AJAX на моем сайте на производственном сервере. Запрос фактически выполняется (голоса поданы, элементы добавлены и т. Д.), Просто jQuery не информируется о результате (что объясняет, почему данные равны нулю).

ОБНОВЛЕНИЕ: Скотт Харуэлл понял это. После того, как я повторил код json_en, PHP продолжил пытаться обработать остальную часть кода. Это было исправлено добавлением exit(); после каждого echo json_encode();.

1 Ответ

1 голос
/ 07 августа 2011

Похоже, вы заходите на страницу голосования с относительными путями.Вы пытались явно написать путь или дать правильный URL вместо ../../../list/vote?

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