zoukankan      html  css  js  c++  java
  • AJAX跨域问题

    完美解决AJAX跨域问题

    我看到过很多人不愿意去正视ajax所存在的技术瓶颈,其实AJAX更应该是Ajax而不是AJAX,突出第一个A是想强调其实AJAX发扬的是一种异步传输的方法,而不是具体到底使用了哪种技术
     

    从AJAX诞生那天起,XMLHttprequest对象不能跨域请求的问题就一直存在。这似乎是一个很经典的问题了。是由于javascript的同源策略(这里不作深入探讨)所导致。

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Ajax跨域问题</title>
        <script type="text/javascript" src="" id="getAspx">
        </script>
        <script type="text/javascript">
            function get(url) {
                var obj = document.getElementById("getAspx");
                obj.src = url;
                (obj.readStatus == 200)
                {
                    alert(responseVal);//如果成功,会弹出Dylan
                }
            }
            function query() {
                get(getDemo.aspx);
            }
        </script>
    </head>
    <body>
    <input type="button" value="Ajax跨域测试" onclick="query();"/>
    </body>
    </html>


    getDemo.aspx后台代码:

    复制代码 代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    namespace LearnJS
    {
        public partial class getDemo : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                Response.Write("var responseVal='Dylan'");
            }
        }
    }


    这个方法又叫做ajaj或者ajax without xmlHttprequest,把x换成了j,是因为使用了<script>标签而没有用到xml和xmlHttprequest的缘故。这种方法似乎有点“另类”,哈哈。

    那现在我们就看看,有了jQuery之后,如何来解决ajax的跨域问题:

    复制代码 代码如下:

    <html>
    <head>
    <title>JQuery学习</title>
    <script src="jquery-1.4.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        var oBtnTest = $("#btnTest");
        oBtnTest.click(function(){
            oBtnTest.disabled = true;   
            var oResult = $("#result");
            oResult.html("loading").css("color","red");
            jQuery.getScript("http://www.jb51.net/test/js.txt",
            function(){           
                oResult.html("name:" + Dylan.name + "<br/>email:" + Dylan.email).css("color","black");           
                oBtnTest.disabled = false;           
            });        
        });   
    });   
    </script>
    </head>
    <body>
    <button id="btnTest">BtnTest</button>
    <div id="result"></div>
    </body>
    </html>

    远程服务器端js.txt中的内容为:
    var Dylan= {name:"Dylan",email:Dylan@163.com}

    笔者感觉这种方式更加简洁。呵呵。当然,读者可以根据实际情况,任意选择实现方式。

    怎么样,其实很简单吧,我看到过很多人不愿意去正视ajax所存在的技术瓶颈,其实AJAX更应该是Ajax而不是AJAX,突出第一个A是想强调其实AJAX发扬的是一种异步传输的方法,而不是具体到底使用了哪种技术。

    其实,在json数据格式之后,有一种更牛X的“jsonp”,也可以实现ajax的跨域通信。其实jsonp不是一种数据格式,只是对我介绍的第二种方式做了改进。从jQuery1.2 版本开始,jQuery 拥有对 JSONP 回调的本地支持。

    Ajax跨域查询完美解决通过$.getJSON()实现

  • 相关阅读:
    jni java与c++交互返回三维数组jobjectArray
    Android开发之EditText 详解(addTextChangedListener监听用户输入状态)
    Android JNI和NDK学习(09)--JNI实例二 传递类对象
    JavaDoc的生成规则---ShinePans
    Android 电话自己主动接听和挂断具体解释
    传统线程技术(一)
    Linux内核启动及根文件系统载入过程
    eclipse、MyEclipse实现批量改动文件编码
    菜鸟开发—应具备的搜索技巧
    Java之GUI编程(一)
  • 原文地址:https://www.cnblogs.com/PheonixHkbxoic/p/5827198.html
Copyright © 2011-2022 走看看