详细的Ajax使用
1. ajax对xml的接收和处理
xml主要作用:
主要保存和传输数据
1. xml文档结构
dom操作xml
getElementsByTagName(); //根据标签名获取元素
childNodes //获取元素下面的子节点,返回数组
nodeValue //获取节点的文本值
问题,如何获取html中的form标签元素
答:document.getElementsByTagName('form')[0];
//获取上面的xml结构的book
document.getElementsByTagName('book')[1];
//获取第二本书的名称(盗墓笔记)
document.getElementsByTagName('book')[1].childNodes[0].childNodes[0].nodeValue;
注意一点:获取文本节点的时候需要在调用一次childNodes[0].nodeValue
2. 使用ajax获取php输出的xml结构文档
服务端输出xml数据:
console.log()或console.info()调试工具的使用:
使用ajax来请求php输出的xml数据:
运行结果:
2. json(数据传输格式)
1. 什么是json
什么是json?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
JSON的优点:
1、Javascript原生支持,后台语言几乎全部支持;
2、轻量级数据格式,占用字符数量极少,特别适合互联网传递;
3、可读性较强,虽然比不上XML那么一目了然,但是xml组装生成麻烦,json易于解析和生成
2.js中的json
例,用json描述一本书的信息
var json={ 'title':'盗墓笔记' , 'price':'100' };
基本: json以"{"开始,"}"结束
键值对以逗号","隔开
键和值之间以冒号":"隔开
代码示例:
3. php中的json
json_encode(数组/对象);
json_encode("索引数组");============>js数组字符串
json_encode("关联数组");============>json字符串
json_encode("索引关联数组");============>json字符串
json_encode("对象");============>json字符串
代码示例:
输出结果:
json_decode();
json_decode("json字符串",true)重点掌握 =============>返回数组
json_decode("json字符串") =============>返回对象
三.使用ajax+json实现多级联动
category表结构:
找游戏的子分类;
sql: select * from category where pid=游戏的ID
找食品的子分类;
sql: select * from category where pid=食品的ID
在js中通过JSON.parse()可以把json字符串变成json对象
完整代码:
php输出json数据:
ajax请求json数据:
结果:
app接口开发:
app接口开发就是我们后台程序员提供一个url地址供app开发者(android和ios)来调用,我们根据接口的参数不同做不同的业务逻辑处理,最后把处理的数据以json的格式输出给我们的app调用者
4. 使用ajax做无刷新分页的案例
1.无刷新的必要性
如果我们通过"传统方式"实现上图的商品评论分页效果,每次分页的时候就会使得头部、左侧、底部等已经显示的信息重新从服务器获得出来,这样对带宽、服务器资源、用户等待时间都有额外的损耗。如果使用ajax无刷新分页,每次就只从服务器获得"商品评论区域"信息即可,对各方面资源的使用就有相应节省。因此ajax无刷新分页效果有其存在必要性。
2. 回顾传统分页
商品总记录条数($count)、每页显示多少条($pagesize)
mysql数据库关键字limit。
limit 偏移量,长度。
偏移量:(当前页码($page)-1)*每页显示条数。
第一页: limit 0,7
第二页: limit 7,7
第三页: limit 14,7
ajax无刷新分页是对传统分页效果的封装:
http://网址/data.php?page=1
http://网址/data.php?page=2
ajax对象.open('get','./data.php?page=2');
以上是ajax通过无刷新方式获得第2页数据
传统分页实现代码:
效果:
三,使用ajax做无刷新分页
无刷新分页的核心关键点:把a连接的href属性用js函数操作ajax来获取分页的数据
修改分页类分页列表的a连接的href属性,改为js函数调用:
注意:可以在a链接的href属性中调用js代码 如: <a href="javascript:getData()"> 点我查看 </a>
ajax获取分页的数据代码:
运行效果:
for in 调试对象的属性:
结果:
4. 天气预报(掌握ajax跨域)
1.Ajax跨域请求天气预报接口
请求代码:
运行结果:
提示跨域请求,请求不到数据:
2.如何才算跨域
一个url地址如下:
分成四个部分
黄色请求的协议: http,https
红色:二级域名
浅蓝色:一级域名
绿色:请求的端口号(默认端口是80端口)
只要以上四个部分有不同的地方都算做跨域请求
解决跨域的办法:用php做代理请求,使用ajax直接请求php的代理文件
php获取接口地址(php是可以跨域请求的):
输出结果:
ajax调用php代理文件实现跨域:
输出结果:
在线解析json网站:
3. 天气代码调用
利用标签的src属性进行跨域
接口网站:
代码调用实例:
注意script,iframe,img具有跨域能力,因为其元素都有一个src属性,此属性可以无跨域的限制
4. jsonp
JSONP(JSON with Padding) 是一种跨域请求方式。
主要原理是利用了script 标签可以跨域请求的特点,由其 src 属性发送请求到服务器,服务器返回 js 代码,网页端接受响应,然后就直接执行了,这和通过 script 标签引用外部文件的原理是一样的。
比如网页端创建一个 script 标签,并给其 src 赋值为 http://localhost/json.php?callback=process, 此时网页端就发起一个请求。服务端将要返回的数据拼好最为函数的参数传入,服务端返回的数据格式类似"echo process({'name':'superfiresun'})",网页端接收到了响应值,因为请求者是 script,所以相当于直接调用 process 方法,并且传入了一个参数。
代码示例:
php组装生成js方法输出:
请求文件如下:
5. jquery中的ajax使用
1.jquery中的ajax基本语法
jquery中的ajax已经做好了几乎所有的浏览器的兼容性
$.ajax({
});
传入一个json对象此方法的参数
$.ajax({
type:"post" , //请求方式 get,post
url:"test.php" , //请求地址
data:"name=lisi&age=24" //请求参数,也可以为json格式数据{'name':'lisi','age':24}
cache:false, //防止缓存
async: true , //异步请求
dataType:json, //返回的数据类型text,json
beforeSend :function(){ //发送请求之前调用 相当于ajax状态不等于4的时候触发
} ,
success:function(msg){ //请求成功时候触发的函数 ajax状态等于4的时候触发
} ,
complete:function(){ //请求完成时候触发的函数
} ,
});
1. 使用jquery中的ajax做一个加减乘除的运算
php输出json数据:
请求代码:
请求结果:
详细的Ajax使用的更多相关文章
- 重点+超详细:ajax和json及案例
不用jQuery的ajax流程 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht ...
- Django框架详细介绍---AJAX
一.概述 1.什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * ...
- 详细梳理ajax跨域4种解决方案
前言 自动接触前端,跨域这个词就一直萦绕在耳畔.因为一般接手的项目都已经做好了这方面的处理,而且之前一直感觉对这方面模棱两可,所以今天就抽个时间梳理一下. 为什么需要跨域 跨域这个概念来自一个叫 &q ...
- 通过Chrome控制台详细查看ajax请求
1.F12打开浏览器开发者工具 2.如图所示
- Ajax完整篇(转载)
Ajax 完整教程 第 1 页 Ajax 简介Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用 ...
- jQuery Ajax 处理 HttpStatus
今天同事碰到一个问题:当服务端Session失效后用ajax请求数据,页面端无法提示和执行跳转.我最先想到是,在后端用js输出一个跳转.发现输出没有效果,因为ajax是异步请求, 需要在success ...
- ASP.NET MVC3入门教程之ajax交互
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=100&extra=page%3D1 随着web技术的不断发展与 ...
- ajax跨域原理以及解决方案
说明 跨域主要是由于浏览器的“同源策略”引起,分为多种类型,本文主要探讨Ajax请求跨域问题 前言 强烈推荐阅读参考来源中的文章,能够快速帮助了解跨域的原理 参考来源 本文参考了以下来源 浏览器同源政 ...
- ajax教程完整版
第 1 页 Ajax 简介 Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.本文的作者是 ...
随机推荐
- Web常见安全漏洞原理及防范-学习笔记
公司在i春秋上面报的一个课程.http://www.ichunqiu.com/course/55885,视频学习. OWASP (Open Web Application Secutiry Proje ...
- HDU 4857 topological_sort
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- SolidEdge 工程图中如何给零件着色 给装配体着色
点击着色按钮,然后点击更新视图即可.
- Ubuntu搭建Android开发环境
前言 由于迁移到新的笔记本,所以Android开发环境须要又一次配置了.android官网有配置教程,我正好回想一遍 配置Java环境 下载jdk.官网地址:http://www.oracle.com ...
- 关于颜色(color、background)
CSS3 HSL colors使用参考指南语法:<length> || <percentage> || <percentage>取值:<length> ...
- oracle user locke
1:管理员登录 sqlplus sys/pwd as sysdba sql->alter user jd account unlock; commit; SQL> password new ...
- 20160222.CCPP体系具体解释(0032天)
程序片段(01):宽字符.c+字符串与内存四区.c 内容概要:宽窄字符 ///宽字符.c #include <stdio.h> #include <stdlib.h> #inc ...
- poj1703 Find them,Catch them 【并查集】
做过一些的带权并查集,再来做所谓的"种类并查集",发现好像就顿悟了. 种类并查集与带权并查集实质上的区别并不大. 关键的区别就是种类并查集仅仅是带权并查集再弄个%取余操作而已.然后 ...
- LINQ解决依据某个字段去重
想要List结果反复 的数据非常easy.仅仅要.Dinstinct()就好了 可是假设想要依据某个字段去除反复的数据,上面的方法就帮不上忙了.我们须要重写一个方法.直接上样例吧 [Serializa ...
- Javascript中没有引用传递,只有按值传递
很多人,包括我,受书本知识消化不彻底的影响,认为 JS 中参数有两种传递方式:数字.字符串等按值传递:数组.对象等按地址(引用)传递.对此种观点,我们要谨慎. var v1 = [] var v2 = ...