Javascript jquery/ajax的json请求中出现意外令牌
我正在使用Jquery获取一个json文件,但浏览器中出现了错误 以下是我的javascript:Javascript jquery/ajax的json请求中出现意外令牌,javascript,jquery,ajax,json,jsonp,Javascript,Jquery,Ajax,Json,Jsonp,我正在使用Jquery获取一个json文件,但浏览器中出现了错误 以下是我的javascript: fetchScenes: function() { $j.ajax({ crossDomain:true, url: 'xml/scenes.json', dataType: "jsonp", success: function( sceneXML ) { }
fetchScenes: function() {
$j.ajax({
crossDomain:true,
url: 'xml/scenes.json',
dataType: "jsonp",
success: function( sceneXML ) {
}
});
},
以下是我的json的部分结构:
{ "scenes": {
"scene": {
"-id": "0",
"-name": "Master",
"scene": [
{
"-id": "1",
"-name": "Weekday Vehicle",
"-description": "Your home away from home.",
"scene": [
{
"-id": "10",
"-name": "For My Commute",
"scene": [
{
"-id": "13",
"-name": "Heading to School",
"scene": [
{
"-id": "20",
"-name": "Style Seeker",
"-vehicles": "1,3,6"
},
{
"-id": "21",
"-name": "Creative Thinker",
"-vehicles": "9,0,3"
}
]
},
我用JSONLint验证了JSON,所以我不确定问题出在哪里。您的JSON无效。我数了7个开始的花括号,只有3个结束的花括号。另外,括号的数量也没有加起来。如果您告诉jQuery希望使用JSONP,那么您必须发送,而不是JSON 也就是说,响应将是someFunctionName{…json here…};其中someFunctionName通常是随jQuery自动生成的URL一起发送的回调参数的值 jQuery将响应评估为JavaScript,这在您的案例中会生成一个错误,因为纯JSON是无效的JavaScript
或者,如果它实际上不是跨域请求xml/scenes.json是本地URL,请将dataType:jsonp更改为dataType:json并删除跨域。何时发生错误?应要求还是应要求?需要更多的调试,正如您所描述的,这似乎是正确的。它发生在JSON文件本身scenes.JSON,第2行如果您告诉jQuery期待JSONP,您必须发送JSONP,而不是JSON:否则,jQuery将以JavaScript形式评估内容,这将生成一个错误。。。或者,如果它实际上不是跨域请求,请将dataType:jsonp更改为dataType:json。我用JSONLint验证了json,所以我不确定问题出在哪里。我猜他没有把所有的东西都贴出来。我认为问题在于他没有返回JSONP。是的,json只是一个部分,所以你可以看到它的结构。Felix-你能解释一下它不返回JSONP是什么意思吗?@mheavers:JSON就是你所拥有的。JSONP实际上只是JavaScript,看起来像someFunctionName{…json here…};。啊-好吧-我想我可以强制它,我觉得我以前也这么做过,但它是在服务器上,而不是在本地文件系统上-我正试图绕过一个跨域的问题,但我想唯一的方法是将它放在JSONP中,如您所列。谢谢嗯,它以前没有说部分JSON。就我个人而言,我会更加努力地阐述我的问题。此外,当错误没有说明解析错误实际发生的位置时,为什么不发布整个JSON呢?另外,我没有注意到JSONP中的P: