当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > 解决ajax跨域问题的实例

AJAX技术
ajax和asp.net的配置文件
关天asp.net ajax beta中在updatepnael中注册脚本的解决方案
ASP.NET AJAX Beta2 调用本地WebService的一些改变
Ajax+GridView+Xml的简易留言薄
PHP和AJAX打造高级RSS聚合器
注册起动脚本,ASP.NET AJAX的一项重要功能!
使用Ajax时的十个常犯的错误
如何在ASP.Net Ajax中调用WebService
xmlHTTP xmlDOC 与 C#中DataSet的结合 实现AJAX简单示例
争论:Ajax技术是否即将没落?
Ajax:拥抱JSON,让XML走开
AJAX有没有未来?
Ajax 框架ZK 2.2 发布
利用ProtoType框架完成的一个下拉框(asp:DropDownList)联动的AJAX例子
在ASP.NET AJAX中别使用mode=Legacy
ASP.NET AJAX RC Tip:页面中无UpdatePanel时UpdateProgress创建出错问题
ECMAScript基础类以及Asp.net Ajax对类Object的扩展
Asp.net Ajax 中的脚本错误: Sys未定义 的解决方法
基于AJAX的ASP.NET聊天室-如何建立共识
解开Ajax技术生命中的达芬奇密码

AJAX技术 中的 解决ajax跨域问题的实例


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 40 ::
收藏到网摘: n/a

要解决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>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for Linux (vers 1 September 2005), see www.w3.org">
 
  <title></title>
        <script src="mootools.js"></script>
        <script src="ajah.js"></script>
</head>
 
<body>
<script>
var ajah=new Ajah("data.js","json198",function(str){
        console.debug("returned:");
        console.debug(str);
},
function(str){});
</script>
</body>
</html>
</pre>

被调用的数据文件如下

#data.js

var json198="hello,this is json198";
funciton Ajah(url,varname,handleSuccess,handleFailure){…}
Ajah这个构造函数调用四个参数:
url:远端地址
varname:远端返回数据的变量名
handleSuccess:加载完毕后加载的函数
handleFailure:暂时没用上