使用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
答案 0 :(得分:1)
您无法使用JSONP发出POST请求,jQuery忽略POST指令并发出GET请求。
您的数据被放置在查询字符串中,并且没有正确地进行URL编码。
服务器正在响应包含错误消息的HTML文档,而不是根据JSONP规则格式化的JavaScript脚本。
您尝试使用的API看起来根本不支持JSONP。由于您在请求中传递自己的用户凭据,因此这是有道理的。 JSONP是一个解决浏览器实现的同源策略的黑客(现在我们可以使用CORS),除非你希望最终用户浏览器直接访问API,否则没有必要使用它。由于最终用户浏览器无法在不提供用户名和密码的情况下访问它,因此它似乎不太可能以这种方式使用。
代替服务器上的API处理数据。