重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
实现ajax需要三个文件,一个是html的表单文件,一个是js的核心文件,一个是php的后台文件。
成都创新互联公司"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!成都创新互联公司具备承接各种类型的成都网站设计、网站制作项目的能力。经过10年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。
下面的是html文件,当键盘按下时触发showHint方法,在showHint方法中会有ajax的核心内容,实例化,获取地址,获取数据并展示等等。
复制代码 代码如下:
html
head
script src="clienthint.js"/script
/head
body
form
First Name:
input type="text" id="txt1"
onkeyup="showHint(this.value)"
/form
pSuggestions: span id="txtHint"/span/p
/body
/html
下面是js的内容clienthint.js。
复制代码 代码如下:
var xmlHttp
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML=""
return
}
//获取xmlHttpObject对象,如果为空,提示浏览器不支持ajax
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
//获取url
var url="gethint.php"
url=url+"?q="+str
url=url+"sid="+Math.random()
//回调函数,执行动作
xmlHttp.onreadystatechange=stateChanged
//open
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
//将获取的信息插入到txtHint中
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}
//获取xml对象
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
下面是php的内容。根据ajax对象传入的参数,获取相应的数据。
复制代码 代码如下:
?php
// Fill up array with names
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Jiqing";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q0
if (strlen($q) 0)
{
$hint="";
for($i=0; $icount($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
//Set output to "no suggestion" if no hint were found
//or to the correct values
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?
首先先要理解ajax的原理,ajax是利用javascript异步http请求发送数据,至于数据处理还需要服务端处理。换句话说ajax只能负责发送数据。jquery中的ajax方法的格式:
$.ajax({
type: 'POST',//发送数据类型 post或者get
url: url ,//数据要发送的地址
data: data ,//发送的数据{'val1':val1,'val2':val2}
success: success ,//数据请求成功的回调
dataType: dataType//返回数据的类型(json xml等)
});
其实就是发送一个网络请求,服务端输出的内容就是响应的内容,如jQuery
$.ajax(
{
url: '', // 请求URL
data: '', // 请求时携带的参数
type: '', // 请求方式, GET/POST
dataType: '',// 响应数据格式, text/json
success: r = {
// 请求成功时回调函数,参数 r 为服务端响应的内容
console.log(r); // 就是你说的后台数据
},
error: () = {
console.error('fail'); // 请求失败
}
}
)
// 服务端响应内容
$data = []; // 从数据库中获取的数据
echo json_encode($data); // 响应客户端, 数据格式为 JSON
举个例子:你想在用户点击时,把 apple 这个字符串,通过前端传给后端。
前端,用 jQuery 举例:
$('button').click(function () {
$.ajax({
url: '/xxx',
method: 'post',
dataType: 'json',
data: {fruit: 'apple'}
}).done(function (res) {
// 成功后的回调
}).fail(function (err) {
// 失败后的回调
});
});
后端 PHP 处理:
$fruit = $_POST['fruit']; // 获取从 ajax 传过来的 fruit 的值,这里是 apple。
如果你想在前端重新显示这个字符串 apple,那么你要用 PHP 把数据返回给页面,然后在上面 “// 成功后的回调” 里面,补充逻辑代码。
例如 PHP 把 apple 返回给前端:
return json_encode(array('fruit' = 'apple'));
前端回调处理:
// 成功后的回调
alert(res.fruit); // 弹框显示 “apple”
实际上,$_POST 能够获取所有从前端用 post 方式提交过来的数据,不管你是页面刷新方式,还是 ajax(jQuery 才叫 ajax,实际上它是 XMLHttpRequest,异步非阻塞的请求方式)