`
473687880
  • 浏览: 487312 次
文章分类
社区版块
存档分类
最新评论

PHP与Ajax的交互更新页面

 
阅读更多

本次主要学习ajax的概念以及怎么与PHP之间进行交互操作

1.什么是Ajax?

国内翻译常为“阿贾克斯”和阿贾克斯足球队同音,AJAX 是一种用于创建快速动态网页的技术,他不是新语言,而是一种使用现有标准的新方法。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新,这样就可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

2.使用Ajax

XMLHttpRequest 是 AJAX 的基础,用于和服务器交换数据。所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)
①创建 XMLHttpRequest 对象
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象为了适应所有的现代浏览器 你可以加一个判断来实例化这个对象
[javascript]view plaincopyprint?
  1. varxmlhttp;
  2. if(window.XMLHttpRequest)
  3. {
  4. //codeforIE7+,Firefox,Chrome,Opera,Safari
  5. xmlhttp=newXMLHttpRequest();
  6. }
  7. else
  8. {
  9. //codeforIE6,IE5
  10. xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
  11. }
② 向服务器发送请求
我们使用 XMLHttpRequest 对象的 open() 和 send() 方法 如下:
XMLHttpRequest.open("GET","index.html",true);
XMLHttpRequest.send();
③AJAX - onreadystatechange 事件
当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件
下面是 XMLHttpRequest 对象的三个重要的属性:


在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
          xmlhttp.onreadystatechange=function()
          {
               if (xmlhttp.readyState==4 && xmlhttp.status==200)
               {
                     document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
               }
          }

3.代码实例

你在百度搜索框中搜索时,你有没有发现当你输入关键词时,搜索框下方是不是有很多提示?当我输入"怎么"关键词,下方有很多提示!这些提示当然是百度服务器响应过来,但是数据传送到你的浏览器上显示时,页面并没有刷新。这样做,有几个好处 1.减轻服务器端的压力(部分数据更新) 2.提高用户交互性 ,今天我这个实例就是要实现类似效果,其实很简单,只有十几行代码,主要用到Ajax和php技术。文章最后我会提供实例下载地址。

ajax.js
var xmlhttp;
function showHint(str)
{
	// 请求参数长度为0
	if (str.length==0)
	{ 
		document.getElementById("txtHint").innerHTML="";
		return;
	}
	// 创建XMLHttpRequest对象
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari 现代浏览器
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5 用户低版本ie
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	// 设置请求类型,请求地址,以及是否启用异步处理请求,大多数设置开启 true
	xmlhttp.open("GET","gethint.php?q="+str,true);
	// 将请求发送至服务器
	xmlhttp.send();
	// 处理onreadystatechange事件 我们规定当服务器响应已做好被处理的准备时所执行的任务
	xmlhttp.onreadystatechange=function()
	{
	    // 4,200 不知道可以看看上面我贴出来的介绍
	    if (xmlhttp.readyState==4 && xmlhttp.status==200)
	    {
		 document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
	    }
	}
	
}
先创建XMLHttpRequest对象 ,再设置请求方法,请求地址,设置事件onreadystatechange,当这个事件触发后,会执行一个功能函数,就是把服务器返回回来的text数据(通过xmlhttp.responseText返回)通过js显示在html页面上。
当服务器返回的是文本数据你就需要用responseText属性,返回的是XML数据你就可以使用responseXML属性
按理说XML也属于文本,只是responseXML 属性返回的变量可以进行XML解析,很方便。下面我介绍个用rospongseXML属性得到数据并解析XML的例子,请看下面的代码:
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
var txt,x,i;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    xmlDoc=xmlhttp.responseXML;
    txt="";
    x=xmlDoc.getElementsByTagName("title");
    for (i=0;i<x.length;i++)
      {
      txt=txt + x[i].childNodes[0].nodeValue + "<br />";
      }
    document.getElementById("myDiv").innerHTML=txt;
    }
  }
xmlhttp.open("GET","/example/xmle/books.xml",true);
xmlhttp.send();
}
</script>
</head>

<body>

<h2>My Book Collection:</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">获得我的图书收藏列表</button>
 
</body>
</html>
这是W3school的例子 你会发现代码里是向http://www.w3school.com.cn//example/xmle/books.xml这个地址发送GET请求,然后用xmlDoc=xmlhttp.responseXML 来接收XML数据,接着解析出books.XML文档里所有的title标签,这样就可以解析出书籍名称。是不是很简单很方便!

我们Demo是要实现一个百度搜索时有相关提示的效果,上面的Ajax,js 只是一个请求,接收数据的中间件,后台php得到ajax请求的数据后返回你想要的数据给Ajax,我们再通过js更改前端HTML的代码,客户就可以看到百度的那种效果,而网页并没有刷新。php代码如下:
<?php
// 用名字来填充数组
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$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";

//获得来自 URL 的 q 参数
$q=$_GET["q"];

//如果 q 大于 0,则查找数组中的所有提示
if (strlen($q) > 0)
{
	$hint="";
	for($i=0; $i<count($a); $i++)
	{
		if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
		{
			if ($hint=="")
			{
				$hint=$a[$i];
			}
			else
			{
				$hint=$hint." , ".$a[$i];
			}
		}
	}
}

// 如果未找到提示,则把输出设置为 "no suggestion"
// 否则设置为正确的值
if ($hint == "")
{
	$response="no suggestion";
}
else
{
	$response=$hint;
}

//输出响应
echo $response;
?>

HTML页面,JS脚本,PHP文件,在本次Demo中 三者关系可以用一张图来表示

首先用户在HTML页面输入关键词触发(onkeyup事件)js脚本,js脚本获取你输入的内容把它发给后端服务器(PHP)做出反应,然后返回相应结果给js脚本,最后js脚本把内容显示在HTML页面上。

源码奉上DOWNLOAD!!!!




分享到:
评论

相关推荐

    Ajax+php数据交互并且局部刷新页面的实现详解

    主要给大家介绍了关于利用Ajax与php数据交互并且局部刷新页面的实现方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。

    《Ajax与PHP基础教程》第二章.

    当把Ajax客户端交互概念与PHP服务器端引擎相结合时,就可以开发出令人惊叹的应用 程序.这两者结合在一起的空间是有限的,而本书将展示如何通过它们的结合得到非常强大的 功能. 要用Ajax和PHP来创建Web应用程序,首先...

    Ajax异步传输与PHP实现交互示例

    背景 前台页面两个select框,一个与学院关联,另一个与专业关联,现需要选择学院select框后,显示学院相关信息,且专业select下面仅有属于该学院的专业名称。也就是实现一个二级联动效果。 两个select里面分别定义...

    Ajax+PHP简单数据交互

    PHP是一种创建动态交互性站点的服务器端脚本语言,优势:PHP脚本语言应用广泛,开源免费,最重要的是入门简单,容易掌握。 PHP能够生成动态页面内容 PHP能够创建、打开、读取、写入、删除以及关闭服务器上的文件 PHP...

    php - ajax

    它不是新的编程语言,而是一种使用现有标准的新方法,最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。《php...

    PHP教程 网页 AJAX(清华大学)

    PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的WEB站点。本教程并不想让你完全了解这种语言,只是能使你尽快加入开发动态web站点的行列

    PHP培训教程之AJAX技术.docx

    使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与器进行交互。 PHP培训教程之AJAX技术全文共3页,当前为第1页。 通过HTTPRequest,一个web页面可以一个请求到web器并且接受web器返回的信息(不用重新...

    php项目源码_[主机域名]PHP+AJAX的whois查询程序_whois.rar

    2. AJAX前端交互:实现页面无刷新更新,实时显示查询结果,提升用户体验。 3. 数据缓存机制:降低服务器压力,提高响应速度。支持设置缓存时长。 4. 域名解析功能:自动识别输入的域名格式,并解析出对应的WHOIS...

    Ajax与mysql数据交互实现留言板功能

    最近自己做了一个小demo,实现了Ajax与MySQL的数据交互,js部分用的是jq,后台用的是PHP,数据库是mysql,过时间再来一个node+MongoDB版的。 关于mysql的使用和安装,就不多讲了,自行百度xampp,Apache服务器和...

    采用Jquery+Ajax+PHP+MySQL实现分类列表管理

    前端页面通过ajax与后台通信,根据后台处理结果响应前端页面交互操作,这是一个很典型的Ajax和JSON应用的例子。

    Ajax 四级导航菜单ASP+Access动态版

    Ajax与ASP网页交互动态添加删除数据一例 Asp+Ajax无限级联动下拉框菜单Access版 ASP 树形菜单TreeView 多样式版 Ajax仿iGoogle双击编辑、网页拖动完整实例 ASP+jQuery无刷新读写数据库操作 Ajax提交数据实例_Ajax+...

    Ajax基础教程(扫描版)

     ajax技术可以提供高度交互的web应用,给予用户更丰富的页面浏览体验。本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用...

    基于主机域名 PHP+AJAX的whois查询程序的毕业设计,开发工具和技术,包括VS Code、Git、Bootstrap

    该程序的主要功能是查询域名的whois信息并将结果展示在页面上。 为了实现这个目标,我们将使用PHP作为后端语言,利用AJAX技术来实现无刷新查询,并通过{主机域名}提供的API接口获取域名的whois信息。 在开发过程中...

    PHP从入门到精通 源码

    全书共分24章,包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、文件...

    vue结合axios与后端进行ajax交互的方法

    以前vue官方推荐的ajax库是vue-resource, 现在改为axios axios的github仓库 实现的效果: 异步请求 页面异步发出get请求获取数据,提交表单异步post数据到服务端 客户端 客户端代码 代码解析: // 服务端请求...

    PHP与Ajax相结合实现登录验证小Demo

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。接下来通过本文给大家分享PHP与Ajax相结合实现登录验证小Demo,对php ajax实现登录验证相关知识感...

    【卷一/共两卷】AJAX实战pdf高清版90M

    3.1.2 重构与Ajax 3.1.3 保持均衡 3.1.4 重构实战 3.2 一些小型重构的案例研究 3.2.1 跨浏览器不一致性:Facade和Adapter模式 3.2.2 管理事件处理函数:Observer模式 3.2.3 重用用户操作处理函数:Command模式 3.2.4...

    PHP从入门到精通PPT

    包括初识PHP、PHP环境搭建和开发工具、PHP语言基础、流程控制语句、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、PHP与JavaScript交互、日期和时间、Cookie与Session、图形图像处理技术、文件系统、面向对象...

Global site tag (gtag.js) - Google Analytics