【问题标题】:Why do I get this 501 Not Implemented error?为什么我会收到此 501 Not Implemented 错误?
【发布时间】:2010-06-25 21:06:04
【问题描述】:

我正在执行以下 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

【问题讨论】:

    标签: ajax json


    【解决方案1】:

    我不知道这是否相关,但通常在客户端向不同域中的服务器请求 JSON 时,由于Same Origin Policy,您需要使用 JSONP 而不是 JSON。不幸的是,他们的 API 似乎不支持使用 JSONP——所以他们必须期望您从您的服务器与他们的站点进行交互。在这种情况下,您需要在服务器上使用代理方法来将调用转换为其 API,以便客户端调用与页面位于同一域中的服务器。

    【讨论】:

    • 我很确定这是问题所在。 JSONP 可能是一个答案。
    • 不过,现在我意识到通过客户端的浏览器进行调用可能非常不安全,因为他们将拥有 URL(其中包含私人信息)。
    【解决方案2】:

    由于这是“jQuery 501(方法未实现)”的顶级 Google 匹配项,我想我会分享在同一域上遇到此问题时对我有用的方法(这不是你的问题)。

    我的问题是我没有返回有效的 JSON,我只是返回“1”。所以要解决这个问题,要么:

    • 确保返回有效的 JSON,或者如果您不需要 JSON 响应,
    • 交换您的调用以使用 $.ajax 而不是 $.getJSON,或者
    • 如果您已经在使用 &.ajax,请删除类型:“json”

    希望对一些人有所帮助。

    【讨论】:

      【解决方案3】:

      我有同样的问题,并意识到这是一个编码问题。它是通过对发送到服务器的数据值进行编码来解决的。尝试类似:

      $(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');
          }
        );
      
      });
      

      end 然后在后端解码数据。希望它可以帮助某人。

      【讨论】:

        猜你喜欢
        • 2012-09-26
        • 1970-01-01
        • 2020-05-17
        • 1970-01-01
        • 2018-06-22
        • 2016-01-01
        • 1970-01-01
        相关资源
        最近更新 更多