您的位置:首页 > 其它

AJAX

2016-05-21 08:29 274 查看
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
AJAX = 异步 JavaScriptXML标准通用标记语言的子集)。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。
练习:
1.输入用户名,看是否可用
主页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../jquery-1.11.2.min.js"></script>  <!--若要引用jQuery和外部JS,jQuery一定放在最前面,外部JS放在后面-->
</head>

<body>
<div><input type="text" id="uid" /><span id="xinxi"></span></div>  <!--AJAX不用提交,所以不用写name,但必须写id-->
</body>

<script type="text/javascript">
$(document).ready(function(e) {

//AJAX   局部刷新技术,页面整体不刷新
//输入用户名,看是否可用

$("#uid").blur(function(){     //失去焦点时触发事件
//把文本框的值取出来
var uid = $(this).val();
//调用AJAX   ajax是一种方法,所以要加括号,括号里的参数是json数据,所以用花括号,注意最后面有分号
$.ajax({
//牢记各个参数及其格式   *****
async:false,              //AJAX同步
url:"ChuLi.php",          //处理页面
data:{u:uid},             //传递的数据,JSON数据,若传递多个数据,中间用逗号隔开
type:"POST",              //提交方式,注意加引号
dataType:"TEXT",          //返回数据类型,注意dataType的T要大写,三种数据类型:TEXT,JSON,XML,注意均为大写
success:function(data){   //回调函数,data返回值,为形参    success是指AJAX调用成功后,返回过来执行这个方法

if(data.trim()=="OK") //trim()去掉前后空格
{
var str = "该用户名可以使用!";
$("#xinxi").html(str);  //将str字符串添加到<sapn></sapn>标签中
}
else
{
var str = "<span style='color:red'>该用户名已经存在!</span>";
$("#xinxi").html(str);
}

}

});
})
});

</script>
</html>


注意:在调用AJAX返回数据判断时可用trim()方法去掉前后空格,以防出错

处理页面

<?php
//接收传递过来的参数
$uid = $_POST["u"];
//查数据库
include("../DB.class.php");
$db = new DB();
$sql = "select count(*) from Users where Uid = '{$uid}'";
$attr = $db->Query($sql,0,"weixin");
if($attr[0][0]==1)
{
echo "NO";    //输出数据类型由dataType决定,本例中dataType为TEXT,所以输出的是字符串
}
else
{
echo "OK";
}






2.输入用户名和密码,看能否登录

主页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../jquery-1.11.2.min.js"></script>

</head>

<body>
<h1>登录</h1>  <!--AJAX不用提交,所以不用<form></form>-->
<div>用户名: <input type="text" id="uid" /></div><br />

<div>密码:   <input type="password" id="pwd" /></div><br />

<div><input type="button" id="btn" value="登录" /></div><br />

</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
/*
数据传输:同步:传输必须等到接收方接收到,才能传下一个;
异步:传输不用等到对方接收就可以继续传输

AJAX: 同步:AJAX必须处理完才能继续向下执行;
··       异步:AJAX在处理数据的同时代码继续向下执行

*/

$("#btn").click(function()
{
var uid = $("#uid").val();
var pwd = $("#pwd").val();

$.ajax(
{
async:false,
url:"LoginChuLi.php",
data:{u:uid,p:pwd},
type:"POST",
dataType:"TEXT",
success: function(data)
{
if(data.trim()=="OK")
{
window.location = "test.php";    //跳转页面
}
else
{
alert("用户名或密码错误!");
}

},
/*error: function(){}执行失败时调用,一般不常用*/

});
})
});


处理页面

<?php
$uid = $_POST["u"];
$pwd = $_POST["p"];
include("../DB.class.php");
$db= new DB();
$sql = "select count(*) from Users where Uid = '{$uid}' and Pwd = '{$pwd}'";

$attr = $db->Query($sql,0,"weixin");
if($attr[0][0]==1)
{
echo "OK";
}
else
{
echo "NO";
}




AJAX异步的问题,例如

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../jquery-1.11.2.min.js"></script>
<style>
#test{ width:100px; height:100px; background-color:#F60;}
</style>
</head>
<body>
<div id="test"></div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
$("#test").click(function()
{
$("#test").html("");  //清空原有数据
$.ajax(
{
//ajax默认是异步的,因为在调用处理页面的时间,下面代码继续执行,而alert的执行时间较短,所以#shuju这个div还没有返回,alert就已经执行完毕,
解决方法:变为同步即可:async:false
async:false,
url:"TestCL.php",
dataType:"TEXT",
success: function(data)
{
$("#test").html(data);
}
});
alert($("#shuju").html());
})
});
</script>


<?php
echo "<div id='shuju' style='color:red'>hello world!</div>";


AJAX异步时



AJAX同步时



报错:

当错误信息提示中有fetch_all()或fetch_row()时一定是SQL语句出错了,解决方法:输出SQL语句,进行输出调错

AJAX调用时,返回整页信息,需要从中找到错误提示



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: