2011-05-24 49 views

回答

-1

参见下面提到的JSON文件

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

这里词汇表是如下显示其类似地包围整个JSON来XML根元素。

<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> 
<glossary><title>example glossary</title> 
    <GlossDiv><title>S</title> 
    <GlossList> 
    <GlossEntry ID="SGML" SortAs="SGML"> 
    <GlossTerm>Standard Generalized Markup Language</GlossTerm> 
    <Acronym>SGML</Acronym> 
    <Abbrev>ISO 8879:1986</Abbrev> 
    <GlossDef> 
     <para>A meta-markup language, used to create markup 
languages such as DocBook.</para> 
     <GlossSeeAlso OtherTerm="GML"> 
     <GlossSeeAlso OtherTerm="XML"> 
    </GlossDef> 
    <GlossSee OtherTerm="markup"> 
    </GlossEntry> 
    </GlossList> 
    </GlossDiv> 
</glossary> 

因此,我们可以说,词汇是根,是XML或JSON只有一个标签。

因此,你必须在包含整个JSON文件的json文件中提供一个根元素。

0

JSON并不要求XML具有根元素。尝试使用JSON.parse(json_string)解析它,而不是使用REXML解析它。

9

当您提出您的AJAX请求时,您可能会发送错误的Content-Type标头。如果您使用标头Content-Type: application/xml发出请求,Rails将尝试将您的请求主体解析为XML,并且您会收到该错误消息。相反,您需要使用application/json或其他内容类型,以便Rails不会尝试解析它。如果您使用的是jQuery,则这是在$.ajax中的contentType设置。

+0

当您完全不指定内容类型时,也可能发生这种情况。 Rails会默认将你的文章解释为XML。 – chrpes 2013-06-14 15:33:59

相关问题