jQuery JSONP“未捕获的语法错误:意外的令牌:”

Posted

技术标签:

【中文标题】jQuery JSONP“未捕获的语法错误:意外的令牌:”【英文标题】:jQuery JSONP "Uncaught SyntaxError: Unexpected token :" 【发布时间】:2011-11-09 09:05:21 【问题描述】:

这是我的 AJAX 调用:

$.ajax(
    type: 'GET',
    url: User.baseURL + 'api/users/briefProfile',
    dataType: 'jsonp',
    success:function(data,text,xhqr)
        //var data = $.parseJSON(data);
        console.log(data);
    ,
    error: function(jqXHR, textStatus, errorThrown) 

        console.log("ERROR");
    ,
    complete: function(jqXHR, textStatus) 

        console.log("complete");
    

);

错误是:Uncaught SyntaxError: Unexpected token :

我在 Chrome(最新)中收到 200 的响应。我得到响应中所有有效 JSON 的内容。我真的不在乎浏览器没有正确解析它,但我真的很想在完整的回调中访问它。

知道什么是 a) 导致错误? b) 如何到达返回的内容客户端?

【问题讨论】:

请向我们展示您的 ajax 响应 我现在实际上收到了 401 错误,但在此之前,我收到了一个返回的 JSON 字符串,类似于:"guid":"E5FC2115FF59","lastName":"Smith","JSESSIONID":"HVQN6jITo8aa8KrHV"... 问题可能是在登录时(通过ajax)设置了JSESSIONID cookie时,Request Cookies中的JSESSIONID不匹配。我在document.cookie 中也看不到这些cookie。我想摧毁它们,但不知道该怎么做。 【参考方案1】:

服务器需要支持jsonp。

响应应该是这样的:

jsonpcallbackname&&jsonpcallbackname("guid":"E5FC2115FF59","lastName":"Smith","JSESSIONID":"HVQN6jITo8aa8KrHV"...)

【讨论】:

【参考方案2】:

您的服务器(网络服务)必须支持 JSONP(跨浏览器支持)。

【讨论】:

【参考方案3】:

我认为您需要在代码中添加类似这样的回调函数

url: User.baseURL + 'api/users/briefProfile?jsoncallback=callbackFunction',

function callbackFunction() 
     // code to execute in success handler

【讨论】:

【参考方案4】:

我遇到了类似的问题,可以使用 eval 解决此问题。试试这个:

 eval("(" + data + ")")

【讨论】:

eval() 是邪恶的。你也没有提到你会把这段代码放在哪里,例如在完整的回调中。

以上是关于jQuery JSONP“未捕获的语法错误:意外的令牌:”的主要内容,如果未能解决你的问题,请参考以下文章

获取未捕获的语法错误:意外的令牌:读取 jsonp 响应时

JsonP 返回“未捕获的语法错误:意外的令牌:”AngularJS - routingnumbers.info

错误:未捕获的语法错误:意外的令牌 <

未捕获的语法错误:意外的令牌:getJSON

节点/角度应用程序未捕获的语法错误:意外的令牌 <

D3.js:“未捕获的语法错误:意外的令牌非法”?