Ajax 为什么会出现501未实现错误?
我正在执行以下AJAX调用:Ajax 为什么会出现501未实现错误?,ajax,json,Ajax,Json,我正在执行以下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' },
$(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未实现”
为什么??我需要做什么来解决这个问题
如果我转到Firebug中AJAX调用对应的URL,我会得到一个JSON文件作为下载,它包含预期的数据
我注意到的一件事是firebug说的是选项而不是GET:
我不知道这是否相关,但一般来说,当在客户机上向另一个域中的服务器请求JSON时,您需要使用JSONP,而不是JSON,这是因为。不幸的是,他们的API似乎不支持使用JSONP——所以他们一定希望您从服务器与他们的站点交互。在这种情况下,您需要在服务器上使用代理方法将调用转换为API,以便客户端调用与页面位于同一域中的服务器。我遇到了同样的问题,并意识到这是一个编码问题。通过对发送到服务器的数据值进行编码,可以解决这个问题。尝试以下方法:
$(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');
}
);
});
结束,然后在后端解码数据。希望它能帮助到其他人。因为这是谷歌最适合“jquery501(方法未实现)”的搜索引擎,我想我会分享在同一个域中体验到的东西(这不是你的问题) 我的问题是我没有返回有效的JSON,我只是返回“1”。所以要解决这个问题,要么:
- 确保返回有效的JSON,或者如果不需要JSON响应
- 将调用交换为使用$.ajax而不是$.getJSON,或者
- 如果您已经在使用&.ajax,请删除类型:“json”
希望这能帮助一些人。我很确定这就是问题所在。JSONP可能是一个答案。不过,现在我意识到通过客户端的浏览器进行调用可能非常不安全,因为他们会有URL(其中包含私人信息)。