SyntaxError:missing;在声明jquery jsonp之前

时间:2013-12-18 12:47:19

标签: javascript jquery ajax json

我使用以下代码访问托管在其他域上的其他服务。

$.ajax({
            type: 'GET',
            url: url,
            async: false,
            jsonpCallback: 'jsonCallback',
            contentType: "application/json",
            dataType:"jsonp",
            success: function(json) {
                alert(json);
            },
            error: function(e) {
               console.log(e.message);
            }
        });

我能够正确获取数据,但是我在mozilla中的firebug中出现了这个错误:

  

SyntaxError:missing;在陈述之前

     

{"你好":"世界"}

有谁能告诉我这里我做错了什么?即使Json数据有效。我尝试了question中发布的所有建议,但我仍然遇到同样的错误。

2 个答案:

答案 0 :(得分:3)

如果您要求的确是JSON,请不要将"jsonp"设置为dataType,并且不提供回调:

$.ajax({
        type: 'GET',
        url: url,
        contentType: "application/json",
        success: function(json) {
            alert(json);
        },
        error: function(e) {
           console.log(e.message);
        }
});

答案 1 :(得分:0)

JSON和JSONP的格式略有不同 JKSONP是一个函数调用表达式

callback({"hellow":"world"});

而JSON只是一个序列化对象

{"Hello":"world"}

从您发布的内容看起来服务器正在返回JSON而不是JSONP

因此您需要更改服务器以正确回复(实际的回调名称是请求的get参数)。如果您使用跨域的ajax调用

,则应该这样做

如果您没有跨域使用ajax,请坚持使用常规JSON