YUI AJAX 跨域 备份

  主题词:YUI AJAX 跨域

     一、前言

     AJAX的POST及GET方式提交相信已经被人们熟知了,且应用面非常广,在同一工程中实现起来非常简单。由于项目的需要在本项目中跨域是很正常的现象,如何实现在同一项目的不同域中实现提交就摆在我们面前了。 

     二、方法分析

     1.ajax+webservice

     这是一种比较常用的模式。WEBSERVICE中返回的是XML结构,ajax直接对XML进行操作.

     2.ajax+wcf

     fm3.0的中新增的wcf,对以上的模式进行了优化,允许返回json形式,这种形式跟今天探讨的理论可能是一样的,我对wcf也是刚刚学习内部机理还不是太了解,不敢妄加断言.

     2.内嵌js实现方式

     这是今天要讨论的。

     众所周知,在浏览器中css和JS是允许跨域调用的,因为这种都是资源性文件,w3c是不会限制他们跨域的。这种方式是利用这种方式,在服务器端生成JSON代码,页面以调用JS的形式调用这个服务器端生成的JSON页面,以实现提交及接收返回值。

     YUI中具体的实现方法可以参见YAHOO开发者社区。

     三、YUI实现

     为了比较实现方式,利用YUI制作了本域内AJAX提交及跨域提交两部分。

     1. 制作HTML的调用页面

    

调用YUI基础JS:

 

<!--共通调用-->
<script type="text/javascript" src="JS/yahoo-min.js"></script>
<!--传统AJAX提交-->
<script type="text/javascript" src="JS/event-min.js"></script>
<script type="text/javascript" src="JS/connection-min.js"></script>
<!--跨域提交-->
<script type="text/javascript" src="JS/get-min.js"></script>
        

JS调用内容:

<script type="text/javascript">
       //ajax成功处理
        var handleSuccess = function(o){
            alert(o.responseText);
        };
        //javascript成功处理
        var handleJsSuccess = function(o){
            alert(data[0].mess);
        };
        //失败处理
        var handleFailure = function(o){
            alert('connect service failt');
        };
        //传统ajax callback
        var callback =
        {
          success:handleSuccess,
          failure:handleFailure
        };
        //传统ajax post
        function makeRequest_Ajax_Post(){
            var postData = "a=b";
            var request = YAHOO.util.Connect.asyncRequest('POST', "../Ajax.aspx", callback, postData);
        }
        //传统ajax get
        function makeRequest_Ajax_Get(){
            var request = YAHOO.util.Connect.asyncRequest('GET', "../Ajax.aspx?b=c", callback);
        }
        //跨域提交
        function makeRequest(){
            //此处url需要改为不在本域的地址,该页需要返回json数据
            var request = YAHOO.util.Get.script("http://localhost:8313/yui_post_get_host/Json.aspx?a=b",
                                            { onSuccess: handleJsSuccess,
                                              onFailure: handleFailure
                                            });
        }
    </script>
         

 调用控件

<input id="btnAjaxPost" type="button" οnclick="makeRequest_Ajax_Post();" value="传统AJAX_POST提交" />
        <input id="btnAjaxGet" type="button" οnclick="makeRequest_Ajax_Get();" value="传统AJAX_GET提交" />
        <input id="btnJson" type="button" οnclick="makeRequest();" value="跨域提交" />
 

     2.服务器端JSON生成:不分语言,不分平台。实现的方法很多,只要符合JSON的格式就可.

        简单JSON示例:

        var data = [{'mess':'ok'}];

    

     四、总结

     YUI是我比较喜欢的框架,原来用过一阵的EXT,感觉对页面的编辑上有些不自由。我个人感觉YUI从上手和自由度上要好一些,EXT在集成度上,快速实现界而UI上要好一些。

 

     五、源码下载

     http://files.cnblogs.com/delphiren/yui_post_get_host.rar

 

     六、参考资料

     http://developer.yahoo.com/yui/   YAHOO YUI社区

     http://json.org/json-zh.html    json介绍

 

 

本文章转自:http://www.cnblogs.com/delphiren/articles/1268671.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值