ajax跨域请求问题解决方案(2)
日期:2009-02-25 阅读:427 分类:Javascript
var proxy = {}; /*@资源地址*/ proxy.url = null; /*@数据对象*/ proxy.data = null; /*@脚本对象*/ proxy.script = null; /*@创建对象*/ proxy.create = function(){ proxy.script = document.createElement("script"); proxy.script.type = "text/javascript"; document.getElementsByTagName("head")[0].appendChild(proxy.script); }; /*@打开连接*/ proxy.request = function(url ,CallBack ,charset){ proxy.script.src = url; proxy.url = url; proxy.script.setAttribute("charset" ,charset); if (document.all) { proxy.script.onreadystatechange = function(){ if (proxy.script.readyState == "loaded" ||为了实现跨域提交,我们还需要相关服务来支持,及返回什么格式的信息,接收什么样的数据。
proxy.script.readyState == "complete") { CallBack(proxy.data); } }; } else { proxy.script.onload = function (){ CallBack(proxy.data); }; } }; /*@添加监听*/ proxy.addEventHandler = function(target, eventType, handler){ if (target.addEventListener) { target.addEventListener(eventType, handler, false); } else if (target.attachEvent) { target.attachEvent("on" + eventType, handler); } else { target["on" + eventType] = handler; } }; proxy.addEventHandler(window ,"load" ,proxy.create);
比如这里约定为服务器端返回数据格式为:
proxy.data = {
errCode:1 ,
description:"用户名格式错误"
};那么调用我们就可以使用:proxy.request("data.js" ,function(data){
alert(data.errCode);
alert(data.description);
});
这里的data.js就相当于一个server端的服务,真正使用的时候会传相关的参数进去,返回的结果同统一的 proxy.data = {***}这样的,proxy.data为一个json object。
本页链接: http://www.scriptlover.com/static/456-javascript-ajax-跨域
标签: javascript ajax 跨域
相关文章
- Javascript在chrome中辅助预订火车票的方法 2012-01-06
- 一款不错的日历控件 2008-07-31
- getElementsByClassName 2008-07-21
- Javascript常用函数归档 2008-12-01
- JS和VML画曲线图 2008-07-06
- Ajax优于JSF的几个原因讨论 2008-07-28
- 非常简练的ajax操作函数 2008-10-28
- ajax中的cache问题 2008-11-11
- ajax跨域请求问题解决方案(1) 2009-01-23
- Script方式实现Ajax在IE9下的一个问题 2011-12-22
- 10种方法实现跨域资源共享 2011-07-30
网友评论
#1: 2009-2-25 18:31:00 by 小淡
发现用script方式动态load脚本在safari下还有个bug.
比如当页面编码为utf-8的时候,那么得到的返回结果即:proxy.data.description 中的汉字为乱码,因此做了下处理.
为script标签加上charset属性为utf-8即可解决.
这里的charset属性是要和调用页面的编码一致.
#2: 2009-9-18 1:32:00 by zhaeng11
zhangheng