jquery - 在 ajax 调用中应在何处插入 header ?

标签 jquery ajax

我尝试过:

$("#wiki").on('click', function(e) {
  var q = $(this).data('subject');
  $.getJSON("https://it.wikipedia.org/w/api.php?gsrnamespace=0&gsrsearch=test&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max?callback=?", {
    srsearch: q,
    action: "query",
    list: "search",
    prop: "text",
    section: 0,
    format: "json"
  }, function(data) {
      headers: {
        "Accept" : "application/json; charset=utf-8",
        "Content-Type": "application/javascript; charset=utf-8",
        "Access-Control-Allow-Origin" : "*"
      },
      $("#results").empty();
      $("#results").append("<p>Results for <b>" + q + "</b></p>");
      $.each(data.query.search, function(i, item) {
      $("#results").append("<div><a href='http://it.wikipedia.org/wiki/" + encodeURIComponent(item.title) + "'>" + item.title + "</a><br>" + item.snippet + "<br><br></div>");
    });
  },
  );
});

还有

$("#wiki").on('click', function(e) {
  var q = $(this).data('subject');
  $.getJSON("https://it.wikipedia.org/w/api.php?gsrnamespace=0&gsrsearch=test&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max?callback=?", {
    srsearch: q,
    action: "query",
    list: "search",
    prop: "text",
    section: 0,
    format: "json"
  }, 
  headers: {
    "Accept" : "application/json; charset=utf-8",
    "Content-Type": "application/javascript; charset=utf-8",
    "Access-Control-Allow-Origin" : "*"
  },
  function(data) {
      $("#results").empty();
      $("#results").append("<p>Results for <b>" + q + "</b></p>");
      $.each(data.query.search, function(i, item) {
      $("#results").append("<div><a href='http://it.wikipedia.org/wiki/" + encodeURIComponent(item.title) + "'>" + item.title + "</a><br>" + item.snippet + "<br><br></div>");
    });
  },
  );
});

最佳答案

没有构造可以在 $.getJSON 调用中添加 header 。您需要使用完整 $.ajax() 请求的 beforeSend 属性,或使用 $.ajaxSetup() 来应用相同的所有 AJAX 调用的 beforeSend 属性,无论使用什么 jQuery 方法来创建它们。

另请注意,Access-Control-Allow-Origin header 应放置在响应中,而不是请求中。这对您发送的内容没有影响。

如果您试图避免某些浏览器中显示的 CORS 警告(该警告建议使用 Access-Control-Allow-Origin header ),那么您需要将其添加到您的服务器中而是用边代码。假设您无权访问服务器代码(在本例中您调用的是 Wikipedia)并且收到 CORS 错误,那么您无法通过 JS 代码调用该域。

关于jquery - 在 ajax 调用中应在何处插入 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40487644/

相关文章:

jQuery tablesorter - 标题中的行跨度导致奇怪的行为

javascript - CSS - 重置动画

javascript - 无法切换多个 div 的可见性,因为切换()分别跟踪每个元素

javascript - 如何等待 axios 调用完成

javascript - 使用ajax重新加载wordpress php部分

javascript - 显示/隐藏内容而不重新加载页面

jquery - 我们如何找到表中被更改的行

jquery .on 父选择器

ajax - CORS POST 不适用于 FF 上的 Apache

java - AjaxLink 切换另一个 AjaxLink 的可见性