现在对Jquery的Ajax进行详细的解析。

顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了。

 笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2

二、Jquery的ajax使用
1.get方式提交数据

$(document).ready(function(){

// load的get方式提交
$('#b1').click(function(){ // 使用jquery提供的方法来发出ajax的请求
// 1.第一个参数表示把ajax请求发送给url
// 2.第二个参数表示是否发送数据data ,如果要发送数据则数据的格式应当是{"username":"hello"}
// 如果你不发送数据,则填入null,如果你发送有数据给服务器文件,默认load用post方式提交,如果没数据用get方式提交
// 3.第三个参数是函数(回调函数)
/*
data表示从服务器回送的数据(string)
textStatus表示状态有四个 succuss,error,notmodify,timeout
xmlHttpRequest 表示XMLHttpRequest对象
*/
var user = $('#user').val();
var pass = $('#pass').val();
$('#one').load("loadController.php?date"+Math.random()+"&username="+user+"&pass="+pass,null,function(data,textStatus,xmlHttpRequest){ alert("服务器返回:"+data);
});
}) 2.post方式,发送数据
<script type="text/javascript">
$(document).ready(function(){ $('#sub').click(function(){
var user=$('#user').val();
var pass=$('#pass').val();
var sendData={
'user':user,
'pass':pass
};
$("#test").load('loadTest.php',sendData,function(data,textStatus,xmlHttpRequest){
// 输出数据
});
});
});
</script>

  

HTML传数据的部分:

<form action="" method="">
用户名:<input type="text" name="user" id="user"><br>
密码:<input type="text" name="pass" id="pass"><br>
<input type="button" value="登录" id="sub">
</form>
<div id="test"></div>

  

后台php代码:

<?php
header("content-type:text/html;charset=utf-8");
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == "hello" && $pass == "123"){
echo "账号密码正确";
}else{
echo "账号密码不正确";
}

  

3. ajax中的$.post()方法的使用

$(document).ready(function(){

$('#sub').click(function(){
var user=$('#user').val();
var pass=$('#pass').val();
var sendData={
'user':user,
'pass':pass
};
$.post('loadTest.php',sendData,function(data,ts){
// alert("hello");
alert(data);
});
});
});

  

4. ajax的 $.ajax()的使用

$(document).ready(function(){
$("#b1").click(function(){
$.ajax({
url:'loadController.php?query=123&id=45&num[]=45&num[]=78&data[uid]=1001',
type:'post',
datatype:'json',
data:{
name:"test",
uid:1523
},
success:function(e) {
console.log(typeof e,e);
// console.log(e.get.data.uid);
console.log(e[0].title);
},
error:function(e) {
console.log(e);
}
});
}); });

  

php代码:

数组一:可以获取$_POST 和 $_GET 内的数据
$arr=[
"post"=>@$_POST,
"get"=>@$_GET,
];
数组二:二维数组,也可以返回
/* $arr=array(
array('title'=>'hello','ba'=>'say'),
array('title'=>'hello2','ba'=>'say2'),
array('title'=>'hello23','ba'=>'say23')
);*/
// 对数据进行 json编码
echo json_encode($arr);

  

三、js跨域请求
跨域:跨域名
一个域名下的文件去请求了和他不一样的域名下的资源,叫做跨域。

//跨域请求问题
window.onload=function(){
var oBtn = document.getElementById("btn");
oBtn.onclick=function(){
var xml = new XMLHttpRequest();
xml.onreadystatechange=function(){
if(xml.readyState == 4){
if(xml.status == 200){
console.log("hello");
alert(xml.responseText);
}
}
} xml.open("get",'http://api.douban.com/labs/bubbler/wall/irachex',true);
xml.send();
}
}

  

跨域解析:
JSONP : JSON with Padding
1. script标签
2.用script标签加载资源是没有跨域问题的

在资源加载进来之前定义好一个函数,这个函数接受一个参数(数据),函数里面利用这个参数做一些事情
然后需要的时候通过script标签加载对应远程文件资源,当远程的文件资源被加载进来的时候,
就会去执行我们前面定义好的函数,并且把数据当做这个函数的参数传入进去
html代码:
<script>
function fn(data){
var oUl1 = document.getElementById('ul1');
var html="";
for(var i=0;i<data.length;i++){
html +="<li>"+data[i]+"</li>";
}
oUl1.innerHTML=html;
}
function fn1(data){
var oUl2 = document.getElementById('ul2');
var html="";
for(var i=0;i<data.length;i++){
html +="<li>"+data[i]+"</li>";
}
oUl2.innerHTML=html;
} </script> <script type="text/javascript">
window.onload = function(){
var oBtn = document.getElementById("btn");
var oBtn2 = document.getElementById("btn2"); oBtn.onclick = function(){ // 当按钮点击的时候再去加载远程资源,让他执行
var oScript = document.createElement('script');
oScript.src = 'test.php?t=num&callback=fn1';
document.body.appendChild(oScript);
}
oBtn2.onclick = function(){
// 当按钮点击的时候再去加载远程资源,让他执行 var oScript = document.createElement('script');
oScript.src = 'test.php?t=str&callback=fn1';
document.body.appendChild(oScript);
} }
</script>

 HTML代码: 

<input type="button" value="获取数字" id="btn">
<input type="button" value="获取字母" id="btn2">
<ul id="ul1"></ul>
<ul id="ul2"></ul>

  

php代码:

<?php
$t = isset($_GET['t'])?$_GET['t']:'num';
$callback = isset($_GET['callback'])?$_GET['callback']:'fn1'; $arr1=array("1111","2222","3333","444");
$arr2=array("aaaa","bbb","ccc","ddd"); if($t == 'num'){
$data = json_encode($arr1);
echo $callback."(".$data.")";
}else{
$data = json_encode($arr2);
echo $callback."(".$data.")";
} 关于jsonp的跨域应用百度搜索提示实例: window.onload=function(){
var oSo = document.getElementById("so");
var oUl = document.getElementById("ul1"); oSo.onkeyup=function(){ if(this.value != ''){
oUl.style.display="block";
var oScript = document.createElement("script");
// 这里是请求的链接
oScript.src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd="+this.value+"&cb=soso>";
document.body.appendChild(oScript);
// 可以试着移除加载的script,不影响使用jsonp跨域请求
oScript.remove();
}else{
oUl.style.display="none";
}
}
oSo.onblur=function(){
oUl.style.display="none";
}
}
// soso是回调函数
function soso(data){
var oUl = document.getElementById('ul1');
if(data.s.length >0){
var html = '';
oUl.style.display="block";
for(var i=0;i<data.s.length;i++){
html +='<li><a href="">'+data.s[i]+'</a></li>';
}
oUl.innerHTML = html;
}else{
oUl.style.display="none";
}
}

  

关于封装好的js跨域jsonp方法使用:

window.onload=function () {
var oQ = document.getElementById("q");
var oUl = document.getElementById("ul1");
oQ.onkeyup = function(){
if(this.value.length>0){
ajax({
url:'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+this.value,
// jsonp需要填回调函数cb=
jsonp:"cb",
// 这里是回调函数,可以不设置
callback:"soso",
// 成功返回
success:function(data){
console.log(data);
oUl.innerHTML="";
var html="";
if(data.s.length){
oUl.style.display="block";
for(var i=0;i<data.s.length;i++){
html +='<li><a href="">'+data.s[i]+'</a></li>';
}
oUl.innerHTML = html;
}else{
oUl.style.display="none";
}
},
error:function(e){
console.log("错误:",e);
}
});
}
}
}

  最后附上实例开发教程。一个简单的豆瓣获取对应信息的开发案例。

豆瓣获取对应信息的开发:

window.onload = function(){
var oQ = document.getElementById("q");
var oBtn = document.getElementById("btn");
var oMsg = document.getElementById("msg");
var oList = document.getElementById("list"); oBtn.onclick=function(){
if(oQ.value != ''){
var oScript = document.createElement("script");
oScript.src = "http://api.douban.com/book/subjects?q="+oQ.value+"&alt=xd&callback=fn1";
document.body.appendChild(oScript);
oScript.remove();
}
} } function fn1(data){
var oMsg = document.getElementById("msg");
var oList = document.getElementById("list");
console.log(data); oMsg.innerHTML = data.title.$t + " : " + data['opensearch:totalResults'].$t; var aEntry = data.entry;
var html = '';
for(var i=0;i<aEntry.length;i++){
html += "<dl><dt>"+aEntry[i].title.$t+"</dt><dd><img src="+aEntry[i].link[2]['@href']+" /></dd></dl>"
}
list.innerHTML = html;
}

  HTML代码:

<input type="text" name="d" id="q">
<input type="button" value="搜索" id="btn">
<p id="msg"></p>
<hr/>
<div id="list"></div>

希望对你们开发起到帮助。   

笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2

jquery里的Ajax解析的更多相关文章

  1. ajax实现注册用户名时动态显示用户名是否已经被注册(1、ajax可以实现我们常见的注册用户名动态判断)(2、jquery里面的ajax也是类似我们这样封装了的函数)

    ajax实现注册用户名时动态显示用户名是否已经被注册(1.ajax可以实现我们常见的注册用户名动态判断)(2.jquery里面的ajax也是类似我们这样封装了的函数) 一.总结 1.ajax可以实现我 ...

  2. 从jquery里的$.ajax()到angularjs的$http

    jquery中对ajax的使用做了很多封装,使得我们使用习惯了,反而并不大清楚在请求过程中的一些细节. 在第一次使用angularjs的$http时,后台一直接受不到前端请求的数据,于是小小研究了一下 ...

  3. jquery ajax解析

    jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...

  4. jQuery ajax解析xml文件demo

    解析xml文件,然后将城市列表还原到下拉列表框中:当选择下拉列表框时,在对应的文本框中显示该城市信息. 前端代码: <!doctype html> <html> <hea ...

  5. JQuery里ajax的表单传值serialize()用法

          本文导读:在jQuery中,当我们使用ajax时,常常需要拼装 input数据以键值对(Key/Value)的形式发送到服务器,用JQuery的serialize方法可以轻松的完成这个工作 ...

  6. Ajax--PHP+JQuery+Ajax解析json、XML数据、加载页面

    一.JQuery+Ajax用get.post方式提交和请求数据 知识要点: $('#userName').blur(function () { var txt = $(this).val(); $.a ...

  7. 关于jQuery中的ajax的方法介绍

           jQuery提供一系列Ajax函数方便我们调用Ajax, 其中最核心也是最复杂的是jQuery.ajax(),所有的其他Ajax函数都是它的一个简化调用.当我们想要完全控制Ajax时可以 ...

  8. JQUERY中各个ajax函数

    1.$(selecter).load()     --- load() 方法从服务器加载数据,并把返回的数据放入被选元素中 2.$.get(url,callback()) 3.$.post(url,d ...

  9. jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...

随机推荐

  1. [STM32F4xx 学习] SPI与nRF24L01+的应用

    前面已经总结过STM32Fxx的特点和传输过程,下面以nRF24L01+ 2.4GHz无线收发器为例,来说明如何使用SPI. 一.nRF24L01+ 2.4GHz无线收发器的介绍 1. 主要特性 全球 ...

  2. [开发笔记usbTOcan]系统架构设计

    SYS.3 | 系统架构设计 系统架构设计过程的目的是建立一个系统体系结构设计,并确定哪些系统需求分配给系统的哪些元素,并根据确定的标准评估系统架构. 系统结构设计需要做一下工作: 开发系统架构设计. ...

  3. unity3d之public变量引发错误

    public变量引发错误 在vs ide中怎么更改也无效 后来发现public里面的值一直不改变,手动改之.

  4. 【转载】ASP.NET 内联代码、内联表达式、数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号)

    ASP.NET 内联代码.内联表达式.数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号) 今天在做渭南电脑维修网的一个小功能时遇到了一些问题,因此特别列出,以备他日之用. 首先对 ...

  5. 实习之bii--源码安装bind9

    刚学习linux时安装过fctix小企鹅输入法,那个比这个安装还要复杂,不过在这里也写一写,还是用的./configure make makeinstall这套命令.不像fctix有些高版本开始用cm ...

  6. SpringCloud之使用Zookeeper作为注册中心

    SpringCloud之使用Zookeeper作为注册中心 linux安装zookeeper 安装zookeeper 关闭linux防火墙 启动zookeeper 1 创建项目导入依赖和配置文件 &l ...

  7. golang中打印格式化的一些占位符

    package main import ( "fmt" ) func main() { var a byte = 255 // byte = uint8 rune = int32 ...

  8. java内部类概述和修饰符

    1 package face_09; 2 /* 3 * 内部类访问特点: 4 * 1,内部类可以直接访问外部类的成员. 5 * 2,外部类要访问内部类,必须建立内部类的对象. 6 * 7 * 一把用于 ...

  9. Java 继承01

    继承 ●示例 class Person { public String name; Person(){ System.out.println("Person Constrctor...&qu ...

  10. linux网卡知识

    使用 Vim 文本编辑器来配置网卡设备的绑定参数.网卡绑定的理论知识类似于前面学习的 RAID 硬盘组,我们需要对参与绑定的网卡设备逐个进行"初始设置".需要注意的是,这些原本独立 ...