Запрещенные ключевые персонажи ajax response - PullRequest
1 голос
/ 27 августа 2010

Я создаю объект JSON динамически, и когда я отправляю его через ajax POST, в ответ я получаю запрещенные ключевые символы. Я знаю, что мой объект в порядке, потому что я могу создать один и тот же объект EXACT вручную, и он отправляет нормально. Я попробовал escape() на всех моих строках, прежде чем добавить их в объект, но это тоже не сработало.

Я что-то упустил?

Это мой пост

$.ajax({
    type: 'POST',

    url: 'http://localhost/test',
    data: obj,
    dataType : 'JSON',
    success: function(){
        console.log('nice');
    }
});

Я использую тот же объект, что и в этом посте

Добавить в JSON, не зная его структуры

Ответы [ 3 ]

2 голосов
/ 27 августа 2010

Я только что понял, что в моих ключах есть пробелы

Да ... сайт, к которому вы подключаетесь, вероятно, работает с CodeIgniter.

CI имеет некоторую тупую функциональность «очистки» ввода, которая намеренно отклоняет все параметры формы с пробелами (или чем-либо, кроме буквенно-цифровых символов и .-/:).

2 голосов
/ 27 августа 2010

Кодировка вашей страницы, вероятно, не совпадает, это означает, что ответ может содержать недопустимые символы, например:

ÿ¬{"Result":"A"}

Необходимо убедиться, что отправляемая кодировка соответствует кодировке другойсторона.

0 голосов
/ 27 августа 2010

Оказывается, эта ошибка была вызвана входной библиотекой CI.В строке 215 вы найдете функцию _clean_input_keys, которая использует preg_match () для запрета определенных символов в ваших ключах.Поэтому, когда вы отправляете JSON и php получает его как массив, он может выдать ошибку.

Чтобы это исправить, вы можете либо расширить библиотеку, либо отредактировать ядро ​​CI.

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