我在哪里插入ajax调用中的标题?

时间:2016-11-08 13:02:09

标签: 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>");
    });
  },
  );
});

1 个答案:

答案 0 :(得分:5)

$.getJSON调用中没有用于添加标头的构造。您需要使用完整beforeSend请求的$.ajax()属性,或使用$.ajaxSetup()将相同的beforeSend属性应用于所有AJAX调用,无论使用何种jQuery方法创造它们。

另请注意,Access-Control-Allow-Origin标头应放在响应中,而不是请求中。它对您发送的内容没有任何影响。

如果您试图避免某些浏览器中显示的CORS警告(建议使用Access-Control-Allow-Origin标头),则需要将其添加到服务器端代码中。假设您无法访问服务器代码(因为您在这种情况下调用了Wikipedia)并且您收到了CORS错误,那么您无法通过JS代码调用该域。