当前位置: 首页 > news >正文

我所知道的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 ")";
}

 

转载于:https://www.cnblogs.com/tongkaiqiang/p/6841646.html

相关文章:

  • 百度地图画圆、个性化
  • 微信企业号开发:corpsecret究竟在哪块呢?
  • (二)Linux——Linux常用指令
  • Magento(CE1.X)自带模块解析五
  • 高通sensor库和Linker的死锁问题分析报告
  • Ubuntu下使用UFW配置防火墙(简化iptables的操作)
  • [笔记]_ELVE_正则表达式
  • Laravel5.4 Queues队列学习
  • 编程规范(一 之kmalloc,fflush,fclose,char_init)
  • Linux Shell远程执行命令(命令行与脚本方式)
  • 互联网企业安全高级指南3.3 如何推动安全策略
  • Excel导出纵向表格(poi)
  • POJ2584_T-Shirt Gumbo(二分图多重最大匹配/最大流)
  • 以精益的眼光重新关注电子商务
  • leetcode-000-序
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Android开源项目规范总结
  • Consul Config 使用Git做版本控制的实现
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • learning koa2.x
  • Meteor的表单提交:Form
  • Promise初体验
  • supervisor 永不挂掉的进程 安装以及使用
  • vue数据传递--我有特殊的实现技巧
  • 讲清楚之javascript作用域
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 三分钟教你同步 Visual Studio Code 设置
  • 因为阿里,他们成了“杭漂”
  • 在weex里面使用chart图表
  • gunicorn工作原理
  • #HarmonyOS:软件安装window和mac预览Hello World
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (9)STL算法之逆转旋转
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .form文件_一篇文章学会文件上传
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [CISCN2019 华东南赛区]Web4
  • [Git].gitignore失效的原因
  • [HOW TO]怎么在iPhone程序中实现可多选可搜索按字母排序的联系人选择器
  • [IE编程] 了解Urlmon.dll和Wininet.dll
  • [iOS]GCD(一)
  • [Java安全入门]三.CC1链
  • [LeetCode] 93. Restore IP Addresses 复原IP地址