我需要构建一个项目以进入我正在申请的JS训练营。他们告诉我,我只能使用普通JS,特别是不允许使用框架和Jquery。至此,当我想从api检索JSON文件时,我会说

$.getJSON(url, functionToPassJsonFileTo)

用于JSON调用和
$.getJSON(url + "&callback?", functionToPassJsonPFileTo)

用于JSONP调用。我本月才开始编程,所以请记住,我不知道JSON或JSONP之间的区别,也不知道它们与称为ajax的事物之间的关系。请说明我如何在Vanilla Javascript中获得以上两行的内容。谢谢。

所以要澄清一下
function jsonp(uri){
    return new Promise(function(resolve, reject){
        var id = '_' + Math.round(10000 * Math.random())
        var callbackName = 'jsonp_callback_' + id
        window[callbackName] = function(data){
            delete window[callbackName]
            var ele = document.getElementById(id)
            ele.parentNode.removeChild(ele)
            resolve(data)
        }

        var src = uri + '&callback=' + callbackName
        var script = document.createElement('script')
        script.src = src
        script.id = id
        script.addEventListener('error', reject)
        (document.getElementsByTagName('head')[0] || document.body || document.documentElement).appendChild(script)
    })
}

相当于JSONP吗?

最佳答案

这是$.getJSON的Vanilla JS版本:

var request = new XMLHttpRequest();
request.open('GET', '/my/url', true);

request.onload = function() {
  if (request.status >= 200 && request.status < 400) {
    // Success!
    var data = JSON.parse(request.responseText);
  } else {
    // We reached our target server, but it returned an error

  }
};

request.onerror = function() {
  // There was a connection error of some sort
};

request.send();

引用:http://youmightnotneedjquery.com/

对于JSONP,SO已经有了答案here

关于javascript - 什么是Jquery的$ .getJSON的普通JS版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35294633/

10-16 06:58