我正在执行以下AJAX调用:
$(document).ready(function() {
$.getJSON('https://sendgrid.com/api/user.stats.json',
{
'api_user': 'me@mydomain.com',
'api_key': 'MYAPIKEY',
'user': 'me@mydomain.com',
'category': 'MY_CATEGORY'
},
function(response){
alert('received response');
}
);
});
我没有按预期得到任何警告信息。相反,Firebug说我得到“501 Not Implemented。”
为什么呢?我需要做些什么来解决这个问题?
如果我转到与Firebug中的AJAX调用相对应的URL,我会下载一个JSON文件,它包含预期的数据。
我注意到的一件事是萤火虫说OPTIONS而不是GET:
alt text http://grab.by/grabs/b1a13d92a4fc69aa310880a5d7a06b95.png
答案 0 :(得分:2)
我不知道这是否相关,但通常在客户端上请求JSON到不同域中的服务器时,由于Same Origin Policy,您需要使用JSONP而不是JSON。不幸的是,他们的API似乎并不支持使用JSONP - 所以他们必须期望您从服务器与他们的站点进行交互。在这种情况下,您需要在服务器上使用代理方法将调用转换为其API,以便客户端调用与该页面位于同一域中的服务器。
答案 1 :(得分:1)
因为这是" jQuery 501(方法未实施)"当我在同一个域上遇到这个问题时,我想我会分享对我有用的东西(这不是你的问题)。
我的问题是我没有返回有效的JSON,我刚刚返回" 1"。所以要解决这个问题,要么:
希望能帮助一些人。
答案 2 :(得分:0)
我遇到了同样的问题,并意识到这是一个编码问题。它是通过编码发送到服务器的数据的值来解决的。尝试类似:
$(document).ready(function() {
$.getJSON('https://sendgrid.com/api/user.stats.json',
{
'api_user': encodeURIComponent('me@mydomain.com'),
'api_key': encodeURIComponent('MYAPIKEY'),
'user': encodeURIComponent('me@mydomain.com'),
'category': encodeURIComponent('MY_CATEGORY')
},
function(response){
alert('received response');
}
);
});
然后解码后端的数据。希望它可以帮到某人。