使用jQuery但不使用XMLHttpRequest()的跨域请求

时间:2014-08-03 14:22:18

标签: javascript jquery xmlhttprequest

我正在尝试从tumblr-API检索JSON数据。

使用jQuery时没问题

$.getJSON("http://api.tumblr.com/v2/blog/blog.com/posts?api_key=key&jsonp=?", function(data) {
    console.log(data);
});

但是尝试使用XMLHttpRequest获取数据,我得到了

  

XMLHttpRequest无法加载。 No' Access-Control-Allow-Origin'标题是   出现在请求的资源上。起源' localhost'是   因此不允许访问。

错误消息。

    var url = "http://api.tumblr.com/v2/blog/blog.com/posts?api_key=key";
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.responseType = "json";
    xhr.onload = function () {
        console.log(xhr.response);
    };


xhr.send();

我真的想在不使用jQuery的情况下获取数据。那我在做什么的jQuery呢? 非常感谢你。

1 个答案:

答案 0 :(得分:0)

通过在URL中插入?,您使jQuery使用JSONP技术而不是XMLHttpRequest发出请求。

要做到这一点:

  1. 将加载处理函数分配给全局变量。您应该为此生成一个唯一的名称。 (例如var f_name = "jsonp" + ++unique_function_count; window[f_name] = function () { ... })。
  2. 使用函数名称
  3. 替换URI中的问号
  4. 创建脚本元素var script = document.createElement('script');
  5. 将URI设置为脚本的来源(script.src = uri;
  6. 加载脚本(document.body.appendChild(script);