Я разрабатывал сайт на своем компьютере и смог получать запросы 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();
.