php和AJAXWord文件下载.docx
- 文档编号:22083816
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:50
- 大小:46.78KB
php和AJAXWord文件下载.docx
《php和AJAXWord文件下载.docx》由会员分享,可在线阅读,更多相关《php和AJAXWord文件下载.docx(50页珍藏版)》请在冰豆网上搜索。
它使用浏览器与web服务器之间的异步数据传输,使网页从服务器请求少量的信息,而不是整张页面。
AJAX是一种独立于web服务器软件的web浏览器技术。
但是,在本教程中,我们将集中在运行在PHP服务器上的实际案例,而不是AJAX的工作原理。
如需阅读更多有关AJAX如何工作的知识,请访问我们的AJAX教程。
二、AJAXXMLHttpRequest
XMLHttpRequest对象使AJAX成为可能。
XMLHttpRequest
XMLHttpRequest对象是AJAX的关键。
该对象在InternetExplorer5.5与2000年7月发布之后就已经可用了,但是在2005人们开始讨论AJAX和Web2.0之前,这个对象并没有得到充分的认识。
创建XMLHttpRequest对象
不同的浏览器使用不同的方法来创建XMLHttpRequest对象。
InternetExplorer使用ActiveXObject。
其他浏览器使用名为XMLHttpRequest的JavaScript内建对象。
要克服这个问题,可以使用这段简单的代码:
varXMLHttp=null
if(window.XMLHttpRequest)
{
XMLHttp=newXMLHttpRequest()
}
elseif(window.ActiveXObject)
XMLHttp=newActiveXObject("
Microsoft.XMLHTTP"
)
代码解释:
1.首先创建一个作为XMLHttpRequest对象使用的XMLHttp变量。
把它的值设置为null。
2.然后测试window.XMLHttpRequest对象是否可用。
在新版本的Firefox,Mozilla,Opera以及Safari浏览器中,该对象是可用的。
3.如果可用,则用它创建一个新对象:
XMLHttp=newXMLHttpRequest()
4.如果不可用,则检测window.ActiveXObject是否可用。
在InternetExplorerversion5.5及更高的版本中,该对象是可用的。
5.如果可用,使用它来创建一个新对象:
XMLHttp=newActiveXObject()
改进的例子
一些程序员喜欢使用最新最快的版本的XMLHttpRequest对象。
下面的例子试图加载微软最新版本的"
Msxml2.XMLHTTP"
,在InternetExplorer6中可用,如果无法加载,则后退到"
,在InternetExplorer5.5及其后版本中可用。
functionGetXmlHttpObject()
{
varxmlHttp=null;
try
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
catch(e)
//InternetExplorer
try
xmlHttp=newActiveXObject("
);
catch(e)
returnxmlHttp;
}
1.首先创建用作XMLHttpRequest对象的XMLHttp变量。
2.按照web标准创建对象(Mozilla,Opera以及Safari):
3.按照微软的方式创建对象,在InternetExplorer6及更高的版本可用:
XMLHttp=newActiveXObject("
)
4.如果捕获错误,则尝试更老的方法(InternetExplorer5.5):
更多有关XMLHttpRequest对象的信息
如果您希望阅读更多有关XMLHttpRequest的内容,请访问我们的AJAX教程。
四、PHP和AJAX请求
AJAX请求
在下面的AJAX例子中,我们将演示当用户向web表单中输入数据时,网页如何与在线的web服务器进行通信。
在下面的文本框中输入名字:
窗体顶端
FirstName:
窗体底端
Suggestions:
这个例子包括三张页面:
∙一个简单的HTML表单
∙一段JavaScript
∙一张PHP页面
HTML表单
这是HTML表单。
它包含一个简单的HTML表单和指向JavaScript的链接:
<
html>
head>
scriptsrc="
clienthint.js"
>
/script>
/head>
body>
form>
FirstName:
inputtype="
text"
id="
txt1"
onkeyup="
showHint(this.value)"
/form>
p>
Suggestions:
<
spanid="
txtHint"
/span>
/p>
/body>
/html>
例子解释-HTML表单
正如您看到的,上面的HTML页面含有一个简单的HTML表单,其中带有一个名为"
的输入字段。
该表单是这样工作的:
1.当用户在输入域中按下并松开按键时,会触发一个事件
2.当该事件被触发时,执行名为showHint()的函数
3.表单的下面是一个名为"
的<
span>
。
它用作showHint()函数所返回数据的占位符。
JavaScript
JavaScript代码存储在"
文件中,它被链接到HTML文档:
varxmlHttp
functionshowHint(str)
if(str.length==0)
{
document.getElementById("
).innerHTML="
"
return
xmlHttp=GetXmlHttpObject()
if(xmlHttp==null)
alert("
BrowserdoesnotsupportHTTPRequest"
}
varurl="
gethint.php"
url=url+"
?
q="
+str
&
sid="
+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("
GET"
url,true)
xmlHttp.send(null)
}
functionstateChanged()
{
if(xmlHttp.readyState==4||xmlHttp.readyState=="
complete"
).innerHTML=xmlHttp.responseText
例子解释:
showHint()函数
每当在输入域中输入一个字符,该函数就会被执行一次。
如果文本框中有内容(str.length>
0),该函数这样执行:
1.定义要发送到服务器的URL(文件名)
2.把带有输入域内容的参数(q)添加到这个URL
3.添加一个随机数,以防服务器使用缓存文件
4.调用GetXmlHttpObject函数来创建XMLHTTP对象,并在事件被触发时告知该对象执行名为stateChanged的函数
5.用给定的URL来打开打开这个XMLHTTP对象
6.向服务器发送HTTP请求
如果输入域为空,则函数简单地清空txtHint占位符的内容。
stateChanged()函数
每当XMLHTTP对象的状态发生改变,则执行该函数。
在状态变成4(或"
)时,用响应文本填充txtHint占位符txtHint的内容。
GetXmlHttpObject()函数
AJAX应用程序只能运行在完整支持XML的web浏览器中。
上面的代码调用了名为GetXmlHttpObject()的函数。
该函数的作用是解决为不同浏览器创建不同XMLHTTP对象的问题。
这一点在上一节中已经解释过了。
PHP页面
被JavaScript代码调用的服务器页面是一个名为"
的简单服务器页面。
中的代码会检查名字数组,然后向客户端返回对应的名字:
php
//Filluparraywithnames
$a[]="
Anna"
;
Brittany"
Cinderella"
Diana"
Eva"
Fiona"
Gunda"
Hege"
Inga"
Johanna"
Kitty"
Linda"
Nina"
Ophelia"
Petunia"
Amanda"
Raquel"
Cindy"
Doris"
Eve"
Evita"
Sunniva"
Tove"
Unni"
Violet"
Liza"
Elizabeth"
Ellen"
Wenche"
Vicky"
//gettheqparameterfromURL
$q=$_GET["
q"
];
//lookupallhintsfromarrayiflengthofq>
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];
//Setoutputto"
nosuggestion"
ifnohintwerefound
//ortothecorrectvalues
if($hint=="
$response="
else
$response=$hint;
//outputtheresponse
echo$response;
如果存在从JavaScript送来的文本(strlen($q)>
0),则:
1.找到与JavaScript所传送的字符相匹配的名字
2.如果找到多个名字,把所有名字包含在response字符串中
3.如果没有找到匹配的名字,把response设置为"
4.如果找到一个或多个名字,把response设置为这些名字
5.把response发送到"
占位符
五、PHP和AJAXXML实例
AJAX可与XML文件进行交互式通信。
AJAXXML实例
在下面的AJAX实例中,我们将演示网页如何使用AJAX技术从XML文件中读取信息。
在下面的下列列表中选择一个CD
选择CD:
在此列出CD信息。
本例包括三张页面:
∙一个简单HTML表单
∙一个XML文件
∙一个JavaScript文件
上面的例子包含了一张简单的HTML表单,以及指向JavaScript的链接:
selectcd.js"
SelectaCD:
selectname="
cds"
onchange="
showCD(this.value)"
optionvalue="
BobDylan"
BobDylan<
/option>
BeeGees"
BeeGees<
CatStevens"
CatStevens<
/select>
divid="
b>
CDinfowillbelistedhere.<
/b>
/div>
正如您看到的,它仅仅是一张简单的HTML表单,其中带有名为"
的下拉列表。
表单下面的段落包含了一个名为"
的div。
这个div用作从web服务器检索到的数据的占位符。
当用户选择数据时,会执行名为"
showCD"
的函数。
这个函数的执行是由"
onchange"
事件触发的。
换句话说,每当用户改变了下拉列表中的值,就会调用showCD函数。
XML文件
XML文件是"
cd_catalog.xml"
该文件中包含了有关CD收藏的数据。
这是存储在"
文件中的JavaScript代码:
functionshowCD(str)
getcd.php"
if(xmlHttp.readyState==4||xmlHttp.readyState=="
stateChanged()和GetXmlHttpObject函数与上一节中的相同,您可以参阅上一页中的相关解释。
showCD()函数
假如选择了下拉列表中的某个项目,则函数执行:
1.调用GetXmlHttpObject函数来创建XMLHTTP对象
2.定义发送到服务器的URL(文件名)
3.向URL添加带有下拉列表内容的参数(q)
4.添加一个随机数,以防服务器使用缓存的文件
5.当触发事件时调用stateChanged
6.通过给定的URL打开XMLHTTP对象
7.向服务器发送HTTP请求
这个被JavaScript调用的服务器页面,是一个名为"
的简单PHP文件。
这张页面是用PHP编写的,使用XMLDOM来加载XML文档"
代码运行针对XML文件的查询,并以HTML返回结果:
$xmlDoc=newDOMDocument();
$xmlDoc->
load("
$x=$xmlDoc->
getElementsByTagName('
ARTIST'
for($i=0;
=$x->
length-1;
//Processonlyelementnodes
if($x->
item($i)->
nodeType==1)
if($x->
childNodes->
item(0)->
nodeValue==$q)
$y=($x->
parentNode);
$cd=($y->
childNodes);
$i<
$cd->
length;
$i++)
if($cd->
echo($cd->
nodeName);
echo("
:
"
nodeValue);
br/>
例子解释
当请求从JavaScript发送到PHP页面时,发生:
1.PHP创建"
文件的XMLDOM对象
2.循环所有"
artist"
元素(nodetypes=1),查找与JavaScript所传数据向匹配的名字
3.找到CD包含的正确artist
4.输出album的信息,并发送到"
六、PHP和AJAXMySQL数据库实例
AJAX可用来与数据库进行交互式通信。
AJAX数据库实例
在下面的AJAX实例中,我们将演示网页如何使用AJAX技术从MySQL数据库中读取信息。
在下拉列表中选择一个名字(测试说明:
该实例功能未实现)
SelectaUser:
在此列出用户信息。
此列由四个元素组成:
∙MySQL数据库
∙简单的HTML表单
∙JavaSc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- php AJAX
![提示](https://static.bdocx.com/images/bang_tan.gif)