使用来自Trakt.tv api的jsonp从jQuery $ .ajax post返回一个parseerror

时间:2014-04-16 19:03:53

标签: javascript jquery ajax api

使用Trakt.tv API。看起来我发送了有效的json,因为我能够进行身份验证但是我收到的返回是一个解析错误。

Resource interpreted as Script but transferred with MIME type text/html: 
http://api.trakt.tv/recommendations/shows/myApiKeyCompleteNumbers?callback=jQuery111000155555475132972_1397674204444&{%22username%22:%22userName%22,%22password%22:%22mySha1PassComplete%22}&_=1397674207093

Uncaught SyntaxError: Unexpected identifier 

回报说:

Disallowed Key Characters.

我正在使用: jQuery 1.11.0

提前感谢您的任何帮助或指导

$(document).ready(function () {

    function success(data) {
        alert('data: ' + data);
    }

    var traktUser = 'myUserName';
    var traktHash = 'mySha1Password';
    var traktApi = 'myApiKey';
    var data = {
        'username': traktUser,
        'password': traktHash
    };
    var postData = JSON.stringify(data);
    var apiUrl = 'http://api.trakt.tv/recommendations/shows/' + traktApi;

    $.ajax({
        type: 'POST',
        url: apiUrl,
        data: postData,
        contentType: 'application/json',
        dataType: 'jsonp',
    }).
    done(success);

}); //document ready

1 个答案:

答案 0 :(得分:1)

您无法使用JSONP发出POST请求,jQuery忽略POST指令并发出GET请求。

您的数据被放置在查询字符串中,并且没有正确地进行URL编码。

服务器正在响应包含错误消息的HTML文档,而不是根据JSONP规则格式化的JavaScript脚本。


您尝试使用的API看起来根本不支持JSONP。由于您在请求中传递自己的用户凭据,因此这是有道理的。 JSONP是一个解决浏览器实现的同源策略的黑客(现在我们可以使用CORS),除非你希望最终用户浏览器直接访问API,否则没有必要使用它。由于最终用户浏览器无法在不提供用户名和密码的情况下访问它,因此它似乎不太可能以这种方式使用。

代替服务器上的API处理数据。