zoukankan      html  css  js  c++  java
  • 我所知道的AJAX

    AJAX为“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),是一种广泛应用在浏览器的网页开发技术。Ajax是多项技术的综合应用。

    1、 不同浏览器下ajax实现上的差异?

    创建对象的方式不同:
    var xmlHttp=window.XMLHttpRequst ? new XMLHttpRequest : new ActiveXObject('Microsof.XMLHTTP');//兼容不同浏览器

    2、一次ajax请求过程中有哪几种状态值,不同状态值之间含义是什么?   

    我们定义的函数一般会被执行3次,状态码依次返回2,3,4, 
    xmlHttp.readyState:
    0:表示未初始化,还没有调用send()方法
    1:表示载入,已调用send()方法,正在发送请求
    2:载入完成,send()方法执行完成,已经接受全部响应内容
    3:交互,正在解析响应内容
    4:完成,响应内容解析完成,可以在客户端调用了

    3、ajax在跨域的情况下会出现什么状况,以及解决方案?

    跨域的必要条件:

    1、协议(http、https)、
    2、域名(https://www.baidu.com)域名就是baidu、
    3、端口(80、8080、8081)
    (以上有任何一个不同都视作跨域)
     
    解决方案:
    A、jsonp(利用动态创建script标签来实现的)
    B、document.domain(将不同的两个页面的域名修改一样)
    C、window.name(两个页面的window.name是相同的,在同一浏览器下)
    D、HTML5的  postMessage
    function onload(){
    var iframe=document.getElementById('iframe');
    var win=iframe.contentWindow; //回去window对象
    win.postMessage("哈哈,我实现跨域了","*");
    // postMessage 第一个参数为发送的消息,只能是字符串,第二个参数为限定接受消息的那个window对象所在的域,如不想限定域,可以使用通配符 * 。
    }

    AJAX请求步骤:

    1、创建异步对象。
    2、建立链接 {
        A,请求方式(get/post),
        B、请求地址、
        C、是否异步 {
                    true:表示建立异步链接,
                    false:表示等待服务器的响应。
                }
        }
    3、指定数据返回时回调函数(onreadystatechage )
    4、发送请求(send)
    实例:
    var xmlHttp=window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    
        xmlHttp.open('GET','data/jsonData.json',true);
    
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4 && xmlHttp.status==200){
                  var jsonData=xmlHttp.responseText;//得到服务器响应的数据
                  jsonData=JSON.parse(jsonData);//把json字符串转化为json对象  或者使用 jsonData=eval('('+jsonData+')');
    
                  //处理数据
            }
        }
        xmlHttp.send(null);

    Jquery的Ajax实现:

    $.ajax({
        type:'POST',
        url:'http://apis.juhe.cn/cook/query',
        dataType:'jsonp',
        data:{
            'key': 'dedaec74f84b89cae6463725b1161756',
            'menu': '青椒炒肉',
            'rn': '10',
            'pn': '3'
        },
        success:function (data) {
            console.log(data);
        },
        error:function () {
        }
    });

    AJAX跨域之JSONP实现方式:

    <head>
        <meta charset="UTF-8">
        <title>Promise</title>
        <script type="text/javascript">
            function jsonpCallback(result) {
                console.log(result);
            }
        </script>
    </head>
    $(function(){
    var JSONP=document.createElement("script");
    JSONP.type="text/javascript";
    JSONP.src="http://ceshi.cc/ceshi.php?callback=jsonpCallback";
    JSONP.charset="utf-8";
    document.getElementsByTagName("head")[0].appendChild(JSONP);
    });
    PHP页面实现关键代码:
    <?php
    header("content-type:application/json");
    if ($_GET['callback']) {
        print $_GET['callback']."(";
    }
    print json_encode($content);
    if ($_GET['callback']) {
        print ")";
    }
  • 相关阅读:
    PHP XML Expat 解析器
    处理get请求中特殊字符的处理
    bootstrap模态框隐藏事件
    HTML中tr是什么?
    php 日期正则表达式
    # JavaScript中的对象
    python发送get请求
    PHP格式化MYSQL返回float类型的方法
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/tongkaiqiang/p/6841646.html
Copyright © 2011-2022 走看看