【发布时间】:2016-05-19 14:10:36
【问题描述】:
我需要建立一个项目才能进入我申请的 JS 训练营。他们告诉我我可能只使用 vanilla 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 等价物吗?
【问题讨论】:
标签: javascript jquery json