【问题标题】:Can you add headers to getJSON in jQuery?您可以在 jQuery 中将标头添加到 getJSON 吗?
【发布时间】:2014-09-20 15:02:43
【问题描述】:

我一直在寻找为 pinterest 获取 JSON 数据,但请注意,他们目前不允许您获取用户和特定板,因此找到了 mashape,我需要获取 API 密钥,但使用标头请求可以使用 getJSON 完成吗?当前代码是:

我需要传递:“X-Mashape-Key: KEY_HERE”我看到它可以在 ajax 中完成,但不知道如何将 getJSON 作为循环重写,但可以在这里看到:

http://blog.mashape.com/mashape-sample-code-executing-ajax-request-using-jquery/

$.getJSON(settings.apiPath + settings.username + '/boards/', function (data) {
            beforeSend: setHeader,
            console.log(data);

            for (var i = 0; i < settings.count; i++) {
                var feed = false;
                if(data.data[i]) {
                    feed = data.data[i];
                }

                var temp_data = {
                    message: truncate(feed["message"], 100),
                    url: feed["link"]
                };

                $('#pinterestFeed ul').append('<li class="feed">' + templating(temp_data) + '</li>');
            }
            $(".pinterest #loading").hide();  
        });

【问题讨论】:

  • 您可以简单地使用$.ajax()? span>
  • 是的,我知道,但不知道如何将我已经在 getJSON 中制作的完全重写为循环数据,这有点新
  • 您可以使用$.ajaxSetup() 为所有未来的 AJAX 调用设置选项。

标签: jquery ajax json getjson


【解决方案1】:

$.getJSON

的简写
$.ajax({
    dataType: "json",
    url: url,
    data: data,
    success: success
});

所以你可以像直接使用它一样简单地使用它

$.ajax({
    beforeSend: function(request) {
        request.setRequestHeader("X-Mashape-Key", 'key_here');
    },
    dataType: "json",
    url: settings.apiPath + settings.username + '/boards/',
    success: function(data) {
        //Your code
    }
});

【讨论】:

  • headers 是在 jQuery 1.5 中添加的,因此您可以在那里指定键/值对,而不是提供 beforeSend 回调。
【解决方案2】:

使用$.ajax()会更好,因为$.getJSON是简写功能,如果你不能使用$.ajax(),你可以使用$.ajaxSetup来设置标题,如:

$.ajaxSetup({
  headers : {   
    'X-Mashape-Key' : 'key_here'
  }
});
$.getJSON(settings.apiPath + settings.username + '/boards/', function (data) {
 ...

但请注意,它会为未来的 Ajax 请求设置标头。

【讨论】:

  • 好答案。不知道ajaxSetup!虽然 $.ajax 是一个更干净的解决方案,但这实际上是 OP 要求的。
  • 文档说这不是推荐的方式。
【解决方案3】:

既然 getJSON 是 $.ajax() 的快捷表示法,为什么不使用它

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

ajax() 提供了一个挂钩,您可以通过beforeSend: function(jqXHR, settings) 指定该挂钩

该钩子允许向传出的 AJAX 请求添加自定义标头...我认为与 $.ajaxSetup 不同...您不必担心使用后取消设置

【讨论】:

    【解决方案4】:

    不要认为您可以在 getJSON 上设置标头。 http://api.jquery.com/jQuery.getJSON/

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 2022-01-11
      相关资源
      最近更新 更多