对远程站点的纯JS同步AJAX调用
Pure JS synchronous AJAX call to a remote site
这就是我得到的:
function fetchJson(url, method, params) {
var request,
method = method || 'GET',
params = params || null;
if (window.XMLHttpRequest) {
request = new window.XMLHttpRequest();
} else {
try {
request = new ActiveXObject("MSXML2.XMLHTTP");
} catch (ex) {
return null;
}
}
request.open(method, url, false);
request.send(params);
if (request.readyState === 4 && request.status === 200)
return JSON.parse(request.responseText);
return null;
}
这应该是同步地获取json。
然而,当我在Opera 12中运行这个来获取Twitter搜索Json时,我会抛出一个未处理的NETWORK_ERR。
是否可以编写一个可以从任何位置获取json的纯JS同步ajax函数?
使用XMLHttpRequest
的调用受同源策略约束,该策略禁止跨源调用,除非服务器和浏览器都支持跨源资源共享(尽管IE8和IE9的支持已中断,需要使用特定于MS的XDomainRequest
对象),并且服务器授予对文档源的访问权限。
如果没有CORS,就没有直接的同步解决方案。你必须间接地通过你自己的服务器。
如果twitter提要支持JSONP,那么您可以使用它,这是异步的。异步请求通常在任何情况下都是最好的。
综上所述,的答案
是否可以编写一个可以从任何位置获取json的纯JS同步ajax函数?
是"是的,如果服务器支持CORS并允许来自您来源的请求,并且您正在使用支持CORS的浏览器;如果不是,则必须通过自己的服务器或进行异步请求。"
在这种情况下,您必须使用jsonp。。。跨域通信。。。
我为您制作了纯javascript函数。。。你可以看看并免费使用它
https://github.com/toosha01/ajax-javascript
相关文章:
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- javascript函数中的异步与同步.(Node.js)
- Node.js和同步API函数
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 如何制作'http请求'在Node js中同步
- Node.js同步调用passport本地注册
- 与node.js同步写入非常大的数据块
- 节点应用.js - 同步读取文件
- Node.js-同步操作中建议的最长时间
- React JS同步处理array.map
- Node JS同步数据库调用
- 对远程站点的纯JS同步AJAX调用
- 用于缓存的Node.js同步请求
- 使用Video.JS同步两个视频
- 幻影JS同步AJAX请求:NETWORK_ERR: XMLHttpRequest异常101
- Node.js同步循环或迭代异步语句
- EXT Js同步ajax请求
- 节点 JS 同步 HTTPS 请求
- 如何使节点 js 同步