'未捕获的语法错误:意外的令牌:'在JSONP AJAX请求中

时间:2015-07-13 07:00:57

标签: javascript jquery oauth-2.0 jsonp xss

我已经在类似的问题上阅读了许多答案,但是没有找到适合我的正确解决方案,所以我不得不问。这是我的代码:

scanf("%49s", name);

以下是获取请求令牌的方法:

$.ajax({
    url: 'http://beta.zelenaposta.sk/oauth/request-token',
    dataType: 'jsonp',
    type: 'POST',
    contentType: 'application/x-www-form-urlencoded',
    data: {
        oauth_consumer_key: some_value,
        oauth_signature: some_other_value,
        oauth_signature_method: 'PLAINTEXT'
    }
}).done(function(data) {
    console.log(data);
}).fail(function(jqXHR,errorThrown, data){
    console.log(errorThrown);
    console.log(jqXHR.responseText);
    console.log(jqXHR.status);
})

此请求发送此响应(如果成功):

POST /oauth/request-token HTTP/1.1 
Host: zelenaposta.sk 
Content-Type: application/x-www-form-urlencoded 

oauth_consumer_key=some_value& 
oauth_signature=some_other_value& 
oauth_signature_method=PLAINTEXT

这是我得到的错误:

  

errorThrown = parsererror
      jqXHR.responseText = null
      未捕获的SyntaxError:意外的令牌:

如何摆脱这些错误?我需要使用JSONP,因为跨站点脚本,我不能访问我发布请求的服务器。我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,结果发现有一些特殊字符会导致解析错误:字符/子字符串如" /"," / n",&# 34; / T"无法解析。在返回JSON之前,我所做的是替换我的WebMethod函数。

        json = json.Replace("\\n", "\\\\n");
        json = json.Replace("\\t", "\\\\t");
        json = json.Replace("\\\"", "\\\\\"");

注意那里的反斜杠数:) 我发现使用Firefox和Firebug的问题是,错误比Chrome控制台给我的更多细节。一个非常有用的提示是解析错误发生的确切列,这帮助我找到了角色。