【问题标题】:jQuery JSONP "Uncaught SyntaxError: Unexpected token :"jQuery JSONP“未捕获的语法错误:意外的令牌:”
【发布时间】: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。我想摧毁它们,但不知道该怎么做。

标签: jquery ajax jsonp


【解决方案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() 是邪恶的。你也没有提到你会把这段代码放在哪里,例如在完整的回调中。
        猜你喜欢
        • 2014-11-24
        • 2016-10-09
        • 1970-01-01
        • 2014-04-30
        • 2015-09-07
        • 2014-05-27
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多