代码之家  ›  专栏  ›  技术社区  ›  TRiG

有效JSON上的firefox json“格式不正确”错误

  •  2
  • TRiG  · 技术社区  · 15 年前

    我在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响应,错误仍然会出现。

    相关问题: "not well-formed" error in Firefox when loading JSON file with XMLHttpRequest . 他的解决方案是修复mime类型。我的已经很准确了,所以肯定是别的东西。

    3 回复  |  直到 9 年前
        1
  •  0
  •   RPF    9 年前

    我在使用OpenJS的JXS时也遇到了同样的问题。在这种情况下,导致错误的原因是 load 属性(版本3.01.a中的第33行):

    //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");
    
        2
  •  3
  •   TRiG    14 年前

    Web开发人员工具栏中的javascript调试器似乎只希望所有Ajax响应都是XML,而不管mime类型如何。任何其他事情都会产生“格式不正确”的错误。

        3
  •  0
  •   ndtreviv    15 年前

    我在以前版本的firefox+firebug中遇到了这个问题,在JSON格式的内容前面/后面有新行。确保在服务器端输出JSON响应之前清除输出流。

    JSP示例:

    out.clear(); out.println(json);