要解决ajax跨域问题,网上给出的方法有二:
1是构建服务器端的代理。简而言之,就是ajax中调用的实质还是本机的url,而服务器端替js去取回远端地址。
2.利用script标记,生成一个标签。在js加载完成后,再执行后续操作。
就是将原来新建xmlHTTPrequest对象的操作改成了新建script标签的操作.
这里给出一个例子:
#ajah.js
| var Ajah=function(url,varname,handleSuccess,handleFailure){ /** * handleSuccess,handleFailure must be functions * */ script = document.createElement("script"); script.src=url; var handler = function(str) { handleSuccess(str); } script.onload = function() { var json=eval(varname); handler(json); } if(window.ie) { script.onreadystatechange = function() { if(script.readyState=='complete'||script.readyState== 'loaded') { var json=eval(varname); if(typeof json != 'undefined') { handler(json); } } } } document.body.appendChild(script); } |
而在网页中应这样调用:
#demo.html
|
<pre> |
被调用的数据文件如下
#data.js
|
var json198="hello,this is json198"; |