JQuery, ajax-запрос не удается с JSON на IE - PullRequest
4 голосов
/ 13 декабря 2011

Я сделал вызов AJAX, и он работает на FF & Chrome, но не на IE 7-8-9.Я загружаю файл JSON из своего домена:

    $.ajax({
        url: 'js/jquery.desobbcode.json',
        dataType: 'json',
        cache: false,
        success: function(json) {
            alert('ok');
        },
        error: function(xhr, errorString, exception) {
            alert("xhr.status="+xhr.status+" error="+errorString+" exception="+exception);
        }
    });

Я также попытался добавить contentType: 'application/json', но получаю тот же вывод:

xhr.status=200
error=parsererror
exception=SyntaxError Unterminated string constant

Я проверил свой JSONфайл с JSONLint и все в порядке.Я проверил, если есть лишняя запятая, и содержание также обрезается. См. Мой файл JSON

Если я поставлю dataType: 'text', я получу предупреждение OK, но также появится всплывающее окно отладки.

Не могли бы вы помочь мне?Привет.

Ответы [ 4 ]

5 голосов
/ 13 декабря 2011

Известно, что в IE возникают проблемы с неявными типами содержимого.

... новый класс XmlHttpRequest в Internet Explorer 7 не очень интуитивно реализует setRequestHeader.Вместо установки указанного заголовка к нему добавляется значение.

Попробуйте указать contentType и проверьте, что возвращается с сервера:

$.ajax({
    url: 'js/jquery.desobbcode.json',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    ...
});

Вы также можете захотетьпопробуйте отправить пустые данные:

$.ajax({
    url: 'js/jquery.desobbcode.json',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    data: {}
    ...
});
2 голосов
/ 16 ноября 2012

Если вы используете php-скрипт для вывода вашего json в виде строки, просто введите

header('Content-Type: application/json; charset=utf-8');

до

echo $jsonString

линия.

1 голос
/ 13 декабря 2011

Это новые строки в JSON.Это должно разобрать в IE:

{"inputButton":[{"id":"desoBBCode_bold","value":"Gras","tag":"b"},{"id":"desoBBCode_italic","value":"Italique","tag":"i"},{"id":"desoBBCode_underline","value":"Souligné","tag":"u"},{"id":"desoBBCode_image","value":"Image","tag":"img"},{"id":"desoBBCode_link","value":"Lien","tag":"url"},{"id":"desoBBCode_quote","value":"Citation","tag":"quote"}],"selectTextSize":[{"text":"Taille","value":""},{"text":"Trèstrèspetit","value":"1"},{"text":"Trèspetit","value":"2"},{"text":"Petit","value":"3"},{"text":"Gros","value":"4"},{"text":"Trèsgros","value":"5"},{"text":"Trèstrèsgros","value":"6"}],"selectTextColor":[{"text":"Couleur","value":"a"},{"text":"Rouge","value":"red"},{"text":"Bleu","value":"blue"},{"text":"Vert","value":"green"}]}

Живой пример: http://jsbin.com/umahiq/edit

0 голосов
/ 13 декабря 2011

Возможно, попробуйте установить для contentType значение "text / json" вместо "application / json".В прошлом у меня были некоторые проблемы с использованием «application / json», и использование «text / json» всегда, казалось, работало лучше.

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