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“未捕获的语法错误:意外的令牌:”的主要内容,如果未能解决你的问题,请参考以下文章