AJAX(Asynchronous JavaScript and XML)通过实现异步请求,使得网站可以在不刷新页面的情况下进行数据交互和更新。而跨域请求则是指用户从一个网站发起HTTP请求,但是这个请求的目标却是另一个网站。
跨域请求属于“同源策略”限制的一种,即浏览器规定它只能在同源的环境中进行交互。而同源策略是由浏览器负责监控并执行的,所以使用传统方式进行跨域请求通常会抛出异常。
但是使用AJAX请求,我们可以通过设置HTTP头信息,将请求假装成同源请求,从而绕开了同源策略的限制。而将获取的数据从JSON格式转化为Javascript格式则需要通过具体的操作来实现。
function loadScript(url) { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; document.getElementsByTagName('head')[0].appendChild(script); } var jsonpUrl = 'http://example.com/data/jsonp?callback=parseData'; loadScript(jsonpUrl); function parseData(data) { console.log(data); // 得到 Javascript 对象 }
通过以上代码片段,我们可以看到它的主要思路是:在页面中创建并加载一个新的script元素,并将目标JSONP URL赋值给它。由于我们在URL后面添加了callback参数,所以目标URL将返回一个Javascript函数的调用。在这个函数内部,我们可以执行我们想做的任何操作,因为返回的是Javascript对象。