Firefox JSON "не правильно сформирован" ошибка на допустимом JSON - PullRequest
2 голосов
/ 21 октября 2010

Я получаю следующее сообщение об ошибке в Firefox:

Error: not well-formed
Source File: http://school/courses.booking.add.php?1287657494723
Line: 1, Column: 1
Source Code:
{"type":"error","message":"You have already booked this course."}

Как видите, вывод является допустимым JSON (он создан функцией PHP json_encode()).И он подается с типом application/json MIME.Я подумал, что ошибка может быть связана с анализом:

eval: function(json) {
    return eval('(' + json + ')');
}

Но даже если я не анализирую строку и просто предупреждаю возвращенный ответ JSON, ошибка все равно появляется.

Смежный вопрос: «не правильно сформированная» ошибка в Firefox при загрузке файла JSON с XMLHttpRequest .Его решением было исправить тип MIME.Мой уже точен, так что, должно быть, что-то еще.

Ответы [ 3 ]

3 голосов
/ 01 декабря 2011

Кажется, что отладчик javascript на панели инструментов веб-разработчика просто ожидает, что все ответы Ajax будут XML, независимо от типа MIME.Все остальное вызовет «не правильно сформированную» ошибку.

0 голосов
/ 23 декабря 2016

У меня была та же проблема с использованием jxs OpenJS.В данном случае причиной ошибки было следующее условие в свойстве load (строка 33 в версии 3.01.A):

//XML Format need this for some Mozilla Browsers
if (http.overrideMimeType) http.overrideMimeType('text/xml');

Это заставляло браузер всегда ожидать XML.Это можно легко исправить следующим образом:

// XML Format needs this for some Mozilla Browsers
if (format.charAt(0) === "x" && http.overrideMimeType) http.overrideMimeType("text/xml");

Поскольку теперь выполняется сравнение format, код должен также изменить свое место и должен быть помещен после

format = format.toLowerCase();

Который в настоящее время находится в строке 38. Итак, код идет от:

32 //XML Format need this for some Mozilla Browsers
33 if (http.overrideMimeType) http.overrideMimeType('text/xml');
34
35 if(!method) method = "GET";//Default method is GET
36 if(!format) format = "text";//Default return type is 'text'
37 if(!opt) opt = {};
38 format = format.toLowerCase();
39 method = method.toUpperCase();

До:

32 if(!method) method = "GET";//Default method is GET
33 if(!format) format = "text";//Default return type is 'text'
34 if(!opt) opt = {};
35 format = format.toLowerCase();
36 method = method.toUpperCase();
37
38 //XML Format need this for some Mozilla Browsers
39 if (format.charAt(0) === "x" && http.overrideMimeType) http.overrideMimeType("text/xml");
0 голосов
/ 05 ноября 2010

У меня была эта проблема с предыдущими версиями Firefox + FireBug, где существовали новые строки перед / после отформатированного содержимого JSON.Обязательно очистите поток вывода перед выводом ответов JSON на стороне сервера.

Пример JSP:

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