Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 为什么会出现501未实现错误?_Ajax_Json - Fatal编程技术网

Ajax 为什么会出现501未实现错误?

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' },

我正在执行以下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未实现”

为什么??我需要做什么来解决这个问题

如果我转到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(其中包含私人信息)。