我所知道的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在跨域的情况下会出现什么状况,以及解决方案?
跨域的必要条件:
解决方案:
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请求步骤:
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
header("content-type:application/json");
if ($_GET['callback']) {
print $_GET['callback']."(";
}
print json_encode($content);
if ($_GET['callback']) {
print ")";
}
我所知道的AJAX的更多相关文章
- 我所知道的MVVM框架(转 司徒大大 )
RubyLouvre commented on 6 Sep 2014 avalon http://avalonjs.github.io/ (使用Object.defineProperties. V ...
- 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字
Swift 2.0学习笔记(Day5)——我所知道的标识符和关键字 原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小小的整 ...
- 《从零開始学Swift》学习笔记(Day5)——我所知道的标识符和keyword
Swift 2.0学习笔记(Day5)--我所知道的标识符和keyword 原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和keyword,一直没有好好的总结,就是这 ...
- 我所知道的Javascript
javascript到了今天,已经不再是我10多年前所认识的小脚本了.最近我也开始用javascript编写复杂的应用,所以觉得有必要将自己的javascript知识梳理一下.同大家一起分享javas ...
- 我所知道的HttpContext.Current
在MVC中,HttpContext.Current是比较常见的对象,可以用它来进行Session,Cache等的保存等.但是它并不是无处不在的,下面就慢慢来揭开它的面纱. 当我们向服务端发送请求的时候 ...
- 你所知道的Java单例模式并不是单例模式
当我们搜索单例模式的时候,能看到很多例子,什么懒汉式.饿汉式,大概如下: public class Singleton { private static Singleton instance=null ...
- 我所知道的window.location
多说无益 直接上干货 假如一个地址为 http://127.0.0.1:5000/index.html?id=4 window.location.href -- 完整路径 -- http://127 ...
- 网页基础:网页设计(我所知道的所有的html和css代码(含H5和CSS3)),如有错误请批评指正
最基础的网页设计,就是给你一个图片你做成一个网页,当然,我的工作是C#,个人网页的功底不是很高首先先认识一下网页的一些相关知识: 一般的,现在一个html网页一般包含html文件,css文件,js文件 ...
- 我所知道的JavaScript中判断数据类型
相信一提到怎么判断js的数据类型,大家都会想到的是typeof.instanceof,那么为什么有了typeof的存在还要有instanceof? typeof? 根据MDN:typeof操作符返回一 ...
随机推荐
- Python中 sys.argv[]的用法
Python中 sys.argv[]的用法 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上 ...
- eclipse如何安装插件
eclipse安装插件以springsource-tool-suite为例 打开eclipse,找到help/About Eclipse/ 然后点击右下角图标 找到EclipsePlatform对应的 ...
- Recurrent Neural Network系列4--利用Python,Theano实现GRU或LSTM
yi作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORK ...
- 老李分享:天使投资 vs. 风险投资 vs. 私募股权融资
天使投资(Angel Capital) 创意阶段(idea stage)到种子阶段(seed stage) 0 – 1百万美元营业额 还没有盈利 小股东 风险异常的高 不存在负债情况 风险投资(Ven ...
- 老李分享:Mac快捷键
poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...
- Activity的Task详解
1.Task Task是一个具有栈结构(后进先出)的容器,可以放置多个Activity实例.启动一个应用,系统就会为之创建一个Task,来放置根Activity.默认情况下,一个Activity启动另 ...
- iOS标注和适配
很多项目一开始没有注意美术素材的规范,这在后期会引起混乱.假如有机会做一个新项目(旧项目会有自己的历史问题,一下子很难改过来),建议设计师和程序员一起坐下来.共同设立一套规范,之后共同遵守. 下面说说 ...
- JVM知识在离线数据中的运用
又是飞花的季节了.多愁善感的林妹妹看到柳絮说:“嫁与东风春不管,凭尔去,忍淹留.”宝姐姐看了却来一句:“好风凭借力送我上青云”. 特别羡慕情商高的人,经常在想他们是怎么做到的.从来看不出他们不喜欢谁, ...
- Angular.js学习笔记 (二)
用A链接对象解析url的组成 var url = 'https://www.baidu.com:8080/aaa/1.html?id=10#name'; var aLink = document.cr ...
- ios sqlite3的简单使用
第一:创建表格 //创建表格 -(void)creatTab{ NSString*creatSQL=@"CREATE TABLE IF NOT EXISTS PERSIONFO(ID INT ...