ajax使用及代码表示
最近学习了ajax,记录一下学习写过的代码和一些问题
一、原生ajax
var xhr = null;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}else {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("get",url,true);
xhr.send(null);
xhr.onreadystatechange = function() {
if(xhr.readyState ==4 && xhr.status == 200) {
var responseText = JSON.parse(xhr.responseText);
if(responseText.status == 0) {
}
}
说明:
1.responseXML是一个对象,可以调用对象的api解析,而responseText是字符串要用var data= JSON.parse(str)将字符串转化为json对象
2.JSON.stringify(data);将json对象转化为字符串
3.如果提交方式改为post,需要使用xhr来模仿表单提交,具体方法为:设置xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
4.解决缓存问题:在url后面传参时传入当前的毫秒数 (new Date()).getTime()
如:http://cdn.weather.hao.360.cn/sed_api_area_query.php?grade=town&_jsonp=loadTown&code=0101&_=1477837767684&_="+(new Date()).getTime();
二、通过xhr实现ajax通信的一个限制来源于跨域安全策略,解决方案:jsonp
function handleResponse(response){
console.log(response.ip+response.name);
}
var script = document.createElement("script");
script.src="http://freegeoip.net/json?callback=handleResponse"
document.head.appendChild(script);
ajax在jquery中的用法
&.ajax({
type:"post",
url:"./jsonp.php?username=username",
dataType:"html",
data:{username:"qqq",password:"123"}.两种方式都可以这样传
success: function(json){//success就是回调函数,解析数据就是这
console.log(json);
},
error:function(){
console.log("fail");
}
})
说明:
data选项既可以包含一个查询字符串,比如 key1=value1&key2=value2 ,也可以是一个映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,则数据再发送器会被转换成查询字符串。
jsonp在jquery里的用法:
&.ajax({
type:"get",
async:true,//异步标志位
url:url,
dataType:"jsonp",
data:{username:"qqq",password:"123"},
jsonp:"cb",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"callback",//自定义的jsonp回调函数名,默认为jQuery自动生成的随机函数名(类似:jQuery110201451414_4323443(["zhangsan","lise"]))
success: function(json){//success就是回调函数,解析数据就在这
//console.log(json);
}
error:function(){
console.log("fail");
}
})
ajax使用及代码表示的更多相关文章
- jQuery ajax的前台代码编写
jQuery ajax的前台代码: <script type="text/javascript" src="/include/jquery/jquery-1.1.3 ...
- 网页制作中最有用的免费Ajax和JavaScript代码库
网上看到的一篇小文,挺有用的,收藏在这. 本文中,我整理了12个免费的Ajax和JavaScript代码库,可以帮助Web开发人员将应用程序提升到一个新水平. Ajax Instant Messeng ...
- Jquery 一次处理多个ajax请求的代码
Jquery 一次处理多个ajax请求的代码,需要的朋友可以参考下. 复制代码代码如下: $(document).ready(function () { $('#getsetgo').click( ...
- PHP中检测ajax请求的代码例子
多数情况下,基于JavaScript 的Js框架如jquery.Mootools.Prototype等,在发出Ajax请求指令时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息, ...
- 补充ajax分页的代码
1.主页代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- ajax同步导致ajax上面的代码不执行?
js代码:环境:IE11要求:点击一个按钮后,页面xxx的地方立即显示"开始处理...",直到ajax处理结束后,xxx内容才更新为新的处理结果:点击事件执行代码如下:xxx.in ...
- ajax 后台java代码执行完毕 前端报404错误
一个ajax请求,到java后台代码,后台成功接受并执行相应处理,但是返回的时候,success却没进去,前端报404错误. 因为是由于Controller忘记写spring的@Responsebod ...
- Ajax分页js代码
var pageIndex = 0; var pageSize = 10; $(function () { $("#btnSearch").click(function () { ...
- Ajax 异步调用代码
function jsAjax() { var Con; var XmlRequset; var AjaxContent; //返回内容 if (window.XMLHttpRequest) { // ...
随机推荐
- IOS9.0 之后友盟分享详细过程
一: 申请友盟的AppKey(友盟的Key是根据应用的名称生成的!) 在友盟注册了你自己的开发者账号后就可以申请AppKey了.然后在这个方法里面设置Key - (BOOL)application:( ...
- OSGI框架中通过BundleContext对象对服务的注册与引用
BundleActivator 在每个Bundle新建时都会默认生成Activator类,该类实现了BundleActivator类,实现了其start()和stop()两个方法 BundleCont ...
- Angela Merkel poised for record poll win and historic third term
Her success remains a mystery for many, but victory could see the German chancellor beat Thatcher's ...
- 【openstack N版】——认证服务keystone
一. 基础环境 1.1环境介绍 linux-node1(控制节点) #系统版本 [root@linux-node1 ~]# cat /etc/redhat-release CentOS Linux r ...
- SVN的具体使用方法介绍(安装以及操作)
今天由于项目的需要安装了SVN,在这里和大家分享一下SVN安装的详细过程和分享一些资料. (1)首先是客户端的安装. 1)获取客户端安装包. --安装包的获取路径: TortoiseSVN的官方下载地 ...
- instance “error” 了怎么办?- 每天5分钟玩转 OpenStack(159)
这是 OpenStack 实施经验分享系列的第 9 篇. OpenStack 用多了,经常会遇到这种情况:对 instance 执行某个操作如果失败了就会处于 "error" 状态 ...
- IOS自定义UIView
IOS中一般会用到几种方式自定义UIView 1.继承之UIView的存代码的自定义View 2.使用xib和代码一起使用的自定义View 3.存xib的自定义View(不需要业务处理的那种) 本文主 ...
- 数字化工厂解决方案——OA办公自动化与ERP
移动办公APP/即时通讯 通过集成手机应用,将移动办公引入到企业信息化管理中,能随时随地的完成审批.查询.警报.知会.公告发布.KPI统计和信息推送.系统已经支持苹果系统.安卓系统和微软WP8系统.企 ...
- php回滚
$m=D('YourModel');//或者是M();$m2=D('YouModel2');$m->startTrans();//在第一个模型里启用就可以了,或者第二个也行$result=$m- ...
- JS邮箱验证-正则验证
<form act="">输入:<input type="text" name="qc" id="qc" ...