Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

jQuery находит ошибки в JSON ответе

414
11 мая 2013 года
CassandraDied
763 / / 24.05.2012
Хай.
Есть один клиентский скрипт, суть его такова:

Код:
$.post(
    "url",
    {data: data},
    function (s_response)
    {
        if (s_response.response == "success")
            alert("Успех");
        else
            alert("Что-то пошло не так :(");
    },
    "JSON"
    );
И ещё один серверный:

Код:
public function action_save_changes($arguments = NULL) {
        $data = $this->model->save_changes(
            $arguments['wp_title'], $arguments['wp_description'], $arguments['wp_id']
        );
        echo json_encode($data);
    }

 public function save_changes($wp_title, $wp_description, $wp_id) {
        $resp['response'] = "success";
        return $resp;
    }
jQuery всегда находит какую-то ошибку и не вызывает callback, если указать, что ожидается JSON ответ, хотя ответ приходит нормальный, если смотреть в отладчик. И кодировка UTF-8, и json_last_error возвращает 0. Пробовал и с .Ajax — такая же фигня. В какую сторону можно копнуть?
8
11 мая 2013 года
mfender
3.5K / / 15.06.2005
Мне кажется, у тебя возвращается не совсем то чего ожидаешь в s_response. Вот если бы ты возвращал объект $resp->response, это было бы справедливо.

UPD. Не, всё правильно. не знал, что в PHP json_encode() интерпретирует ассоциативные массивы как объекты.

А так без изменений попробовал твой код - всё работает, алерты правильные пишет, ошибок нет.
414
11 мая 2013 года
CassandraDied
763 / / 24.05.2012
Да у меня тоже работало до определённого момента, а потом почему-то перестало. Даже не знаю, в чём может быть дело. Попробую обновить jQuery,
414
11 мая 2013 года
CassandraDied
763 / / 24.05.2012
mfender, какой у тебя тип написан в заголовке ответа? У меня text/html, но что-то мне подсказывает, что там не хватает фразы json. Могу ошибаться, а проверить у себя не на чём — ничего не работает. :)
8
11 мая 2013 года
mfender
3.5K / / 15.06.2005
Content-Type text/html
Могу ошибаться, но в ответе сервера не должно быть никакого json, а то браузер растеряется, и начнёт допытываться что с ним вообще делать.
414
11 мая 2013 года
CassandraDied
763 / / 24.05.2012
Да, пожалуй, никакогго json не должно быть в ответе.
На данный момент понял, что стандартный конвертер не может text перевести в json. Почему — не разберусь. Сразу по входу в конвертер бросается эксепшон. Вроде бы в js нет никаких компилируемых исходников, до которых я не мог бы добраться отладчиком, да? Если так, тогда я не понимаю, почему не удаётся вызвать функцию и войти в неё отладчиком, вместо чего бросается эксепшон.
414
11 мая 2013 года
CassandraDied
763 / / 24.05.2012
Проблема решена. Баг находится в валидаторе, который использует jQuery. Откат на версию 1.8.0 решил проблему. Только неясно, почему ошибка проявилась так внезапно: пару дней назад всё работало и, вроде бы, только добавлял новый код, но не менял старый.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог