AJAX 高级.docx

上传人:b****5 文档编号:12188297 上传时间:2023-04-17 格式:DOCX 页数:24 大小:29.77KB
下载 相关 举报
AJAX 高级.docx_第1页
第1页 / 共24页
AJAX 高级.docx_第2页
第2页 / 共24页
AJAX 高级.docx_第3页
第3页 / 共24页
AJAX 高级.docx_第4页
第4页 / 共24页
AJAX 高级.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

AJAX 高级.docx

《AJAX 高级.docx》由会员分享,可在线阅读,更多相关《AJAX 高级.docx(24页珍藏版)》请在冰豆网上搜索。

AJAX 高级.docx

AJAX高级

AJAX请求实例

∙PreviousPage

∙NextPage

我们已看到AJAX可被用来创建更多交互性的应用程序。

AJAXSuggest实例

在下面的AJAX例子中,我们会演示当用户向一个标准的HTML表单中输入数据时网页如何与web服务器进行通信。

在下面的文本框中输入名字:

窗体顶端

FirstName:

窗体底端

Suggestions:

例子解释-HTML表单

表单的HTML代码:

FirstName:

Suggestions:

正如您看到的,这是一个简单的带有名为"txt1"输入域的HTML表单。

输入域的事件属性定义了一个由onkeyup事件触发的函数。

表单下面的段落包含了一个名为"txtHint"的span,这个span充当了由web服务器所取回的数据的位置占位符。

当用户输入数据时,名为"showHint()"的函数就会被执行。

函数的执行是由"onkeyup"事件触发的。

另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数showHint就会被调用。

例子解释-showHint()函数

showHint()函数是一个位于HTML页面head部分的很简单的JavaScript函数。

此函数包含以下代码:

functionshowHint(str)

{

if(str.length==0)

{

document.getElementById("txtHint").innerHTML="";

return;

}

xmlHttp=GetXmlHttpObject()

if(xmlHttp==null)

{

alert("您的浏览器不支持AJAX!

");

return;

}

varurl="gethint.asp";

url=url+"?

q="+str;

url=url+"&sid="+Math.random();

xmlHttp.onreadystatechange=stateChanged;

xmlHttp.open("GET",url,true);

xmlHttp.send(null);

}

每当有字符输入文本框时,此函数就会执行。

假如文本域中存在某些输入,函数就会执行:

∙定义回传数据的服务器的url(文件名)

∙使用文本框的内容向url添加参数(q)

∙添加一个随机的数字,以防止服务器使用某个已缓存的文件

∙创建一个XMLHTTP对象,并告知此对象当某个改变被触发时执行名为stateChanged的函数

∙向服务器发送一个HTTP请求

∙如果输入域为空,此函数仅仅会清空txtHint占位符的内容

例子解释-GetXmlHttpObject()函数

上面的例子可调用名为GetXmlHttpObject()的函数。

此函数的作用是解决为不同浏览器创建不同的XMLHTTP对象的问题。

这是此函数的代码:

functionGetXmlHttpObject()

{

varxmlHttp=null;

try

{

//Firefox,Opera8.0+,Safari

xmlHttp=newXMLHttpRequest();

}

catch(e)

{

//InternetExplorer

try

{

xmlHttp=newActiveXObject("Msxml2.XMLHTTP");

}

catch(e)

{

xmlHttp=newActiveXObject("Microsoft.XMLHTTP");

}

}

returnxmlHttp;

}

例子解释-stateChanged()函数

stateChanged()函数包含下面的代码:

functionstateChanged()

{

if(xmlHttp.readyState==4)

{

document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

}

}

每当XMLHTTP对象的状态发生改变时,stateChanged()函数就会执行。

当状态变更为4(“完成”)时,txtHint占位符的内容就被响应文本来填充。

AJAX请求源代码

∙PreviousPage

∙NextPage

AJAXSuggest源代码的实例

下面的源代码属于上一节的AJAX实例。

您可以拷贝粘贴这些代码,然后亲自测试一下。

AJAXHTML页面

这是HTML页面。

它包含了一个简单的HTML表单,以及一个指向JavaScript的链接。

FirstName:

Suggestions:

下面列出了JavaScript代码。

AJAXJavaScript

这是JavaScript代码,存储在文件"clienthint.js"中:

varxmlHttp

functionshowHint(str)

{

if(str.length==0)

{

document.getElementById("txtHint").innerHTML="";

return;

}

xmlHttp=GetXmlHttpObject()

if(xmlHttp==null)

{

alert("您的浏览器不支持AJAX!

");

return;

}

varurl="gethint.asp";

url=url+"?

q="+str;

url=url+"&sid="+Math.random();

xmlHttp.onreadystatechange=stateChanged;

xmlHttp.open("GET",url,true);

xmlHttp.send(null);

}

functionstateChanged()

{

if(xmlHttp.readyState==4)

{

document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

}

}

functionGetXmlHttpObject()

{

varxmlHttp=null;

try

{

//Firefox,Opera8.0+,Safari

xmlHttp=newXMLHttpRequest();

}

catch(e)

{

//InternetExplorer

try

{

xmlHttp=newActiveXObject("Msxml2.XMLHTTP");

}

catch(e)

{

xmlHttp=newActiveXObject("Microsoft.XMLHTTP");

}

}

returnxmlHttp;

}

AJAX服务器页面-ASP和PHP

其实不存在什么“AJAX服务器”。

AJAX页面可以由任一因特网服务器提供服务。

在上一节的例子中被JavaScript调用的服务器页面是一个简单的名为"gethint.asp"的ASP文件。

下面我们列出了这个服务器页面代码的实例,使用ASP来编写。

AJAXASP实例

"gethint.asp"页面中的代码针对IIS使用VBScript编写。

它会检查一个名字数组,然后向客户端返回相应的名字:

<%

response.expires=-1

dima(30)

'用名字为数组赋值

a

(1)="Anna"

a

(2)="Brittany"

a(3)="Cinderella"

a(4)="Diana"

a(5)="Eva"

a(6)="Fiona"

a(7)="Gunda"

a(8)="Hege"

a(9)="Inga"

a(10)="Johanna"

a(11)="Kitty"

a(12)="Linda"

a(13)="Nina"

a(14)="Ophelia"

a(15)="Petunia"

a(16)="Amanda"

a(17)="Raquel"

a(18)="Cindy"

a(19)="Doris"

a(20)="Eve"

a(21)="Evita"

a(22)="Sunniva"

a(23)="Tove"

a(24)="Unni"

a(25)="Violet"

a(26)="Liza"

a(27)="Elizabeth"

a(28)="Ellen"

a(29)="Wenche"

a(30)="Vicky"

'从URL取得参数q

q=ucase(request.querystring("q"))

'如果q的长度大于0,则查找所有的hint

iflen(q)>0then

hint=""

fori=1to30

ifq=ucase(mid(a(i),1,len(q)))then

ifhint=""then

hint=a(i)

else

hint=hint&","&a(i)

endif

endif

next

endif

'如果找不到hint,则输出"nosuggestion"

'或者输出正确的值

ifhint=""then

response.write("nosuggestion")

else

response.write(hint)

endif

%>

AJAX数据库实例

∙PreviousPage

∙NextPage

AJAX可用来与数据库进行动态地通信。

AJAX数据库实例

在下面的AJAX例子中,我们将演示如何使用AJAX技术令网页从数据库读取信息。

在下面的框中选择一个名字

窗体顶端

请选择一位客户:

窗体底端

客户信息将在此处列出。

AJAX实例解释

上面的实例包含了一个简单的HTML表单以及执行JavaScript的链接:

请选择一位客户:

AlfredsFutterkiste

North/South

WolskiZajazd

客户信息将在此处列出。

正如您看到的,这是一个简单的带有一个名为"customers"下拉列表的HTML表单。

表单以下的段落包含了一个名为"txtHint"的div,这个div充当了由web服务器所取回的信息的位置占位符。

当用户选择数据时,名为"showCustomer()"的函数会被执行。

函数的执行会被"onchange"事件触发。

另外需要说明的是:

每当用户改变下拉列表中的值,函数showCustomer就会被调用。

下面列出了JavaScript代码。

AJAXJavaScript

这是存储在文件"selectcustomer.js"中的JavaScript代码:

varxmlHttp

functionshowCustomer(str)

{

xmlHttp=GetXmlHttpObject();

if(xmlHttp==null)

{

alert("您的浏览器不支持AJAX!

");

return;

}

varurl="getcustomer.asp";

url=url+"?

q="+str;

url=url+"&sid="+Math.random();

xmlHttp.onreadystatechange=stateChanged;

xmlHttp.open("GET",url,true);

xmlHttp.send(null);

}

functionstateChanged()

{

if(xmlHttp.readyState==4)

{

document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

}

}

functionGetXmlHttpObject()

{

varxmlHttp=null;

try

{

//Firefox,Opera8.0+,Safari

xmlHttp=newXMLHttpRequest();

}

catch(e)

{

//InternetExplorer

try

{

xmlHttp=newActiveXObject("Msxml2.XMLHTTP");

}

catch(e)

{

xmlHttp=newActiveXObject("Microsoft.XMLHTTP");

}

}

returnxmlHttp;

}

AJAX服务器页面

这个被JavaScript调用的服务器页面,是一个名为"getcustomer.asp"的简单的ASP文件。

此页面使用VBScript针对IIS编写。

可以使用PHP或其他服务器语言对它进行改写。

此代码可运行针对某个数据库的SQL,并以HTML表格返回结果:

<%

response.expires=-1

sql="SELECT*FROMCUSTOMERSWHERECUSTOMERID="

sql=sql&"'"&request.querystring("q")&"'"

setconn=Server.CreateObject("ADODB.Connection")

conn.Provider="Microsoft.Jet.OLEDB.4.0"

conn.Open(Server.Mappath("/db/northwind.mdb"))

setrs=Server.CreateObject("ADODB.recordset")

rs.Opensql,conn

response.write("

")

dountilrs.EOF

foreachxinrs.Fields

response.write("

")

response.write("

")

next

rs.MoveNext

loop

response.write("

"&x.name&""&x.value&"
")

%>

AJAXXML实例

∙PreviousPage

∙NextPage

AJAX可用来与XML文件进行交互式通信。

AJAXXML实例

在下面的AJAX实例中,我们将演示如何通过使用AJAX技术,从XML文件中读取信息。

在下面的下列列表中选择一个CD

窗体顶端

选择CD:

窗体底端

在此列出CD信息。

AJAX实例解释

上面的例子包含了一个简单的HTML表单,以及指向一段JavaScript的链接:

选择CD:

BobDylan

BonnieTyler

DollyParton

在此列出CD信息。

正如您所看到的,它只是一个带有名为"cds"的下拉列表的简单HTML表单。

表单下面的段落包含一个名为"txtHint"的div。

该div用作从web服务器接受的数据的位置占位符。

当用户选择列表时,名为"showCD"的函数就会被执行。

该函数的执行是"onchange"事件触发的。

换句话说,每当用户改变了下拉列表的值,这个showCD函数就会被调用。

下面列出了JavaScript代码。

AJAXJavaScript

这是存储在文件"selectcd.js"中的JavaScript代码:

varxmlHttp

functionshowCD(str)

{

xmlHttp=GetXmlHttpObject();

if(xmlHttp==null)

{

alert("YourbrowserdoesnotsupportAJAX!

");

return;

}

varurl="getcd.asp";

url=url+"?

q="+str;

url=url+"&sid="+Math.random();

xmlHttp.onreadystatechange=stateChanged;

xmlHttp.open("GET",url,true);

xmlHttp.send(null);

}

functionstateChanged()

{

if(xmlHttp.readyState==4)

{

document.getElementById("txtHint").innerHTML=xmlHttp.responseText;

}

}

functionGetXmlHttpObject()

{

varxmlHttp=null;

try

{

//Firefox,Opera8.0+,Safari

xmlHttp=newXMLHttpRequest();

}

catch(e)

{

//InternetExplorer

try

{

xmlHttp=newActiveXObject("Msxml2.XMLHTTP");

}

catch(e)

{

xmlHttp=newActiveXObject("Microsoft.XMLHTTP");

}

}

returnxmlHttp;

}

AJAX服务器页面

被JavaScript调用的服务器页面,是名为"getcd.asp"的简单ASP文件。

该页面使用VBScript编写,针对Internet信息服务器(IIS)。

可以用PHP或其他服务器语言,简单地重写该页面。

请看在PHP中对应的例子(测试:

缺具体页面)。

该代码执行针对XML文件的查询,并以HTML返回结果:

<%

response.expires=-1

q=request.querystring("q")

setxmlDoc=Server.CreateObject("Microsoft.XMLDOM")

xmlDoc.async="false"

xmlDoc.load(Server.MapPath("cd_catalog.xml"))

setnodes=xmlDoc.selectNodes("CATALOG/CD[ARTIST='"&q&"']")

foreachxinnodes

foreachyinx.childnodes

response.write(""&y.nodename&":

")

response.write(y.text)

response.write("
")

next

next

%>

AJAXResponseXML实例

∙PreviousPage

∙NextPage

与responseText以字符串返回HTTP响应不同,responseXML以XML返回响应。

ResponseXML属性返回XML文档对象,可使用W3CDOM节点树的方法和属性来检查和解析该对象。

AJAXResponseXML实例

在下面的AJAX实例中,我们将演示网页如何使用AJAX技术从数据库中读取信息。

这次,这些从数据库中选取的数据将被转换为XML文档,然后我们将使用DOM来提取要显示的值。

选取下拉列表中的名称

窗体顶端

选择客户:

窗体底端

AJAX实例解释

上面的例子包含一个HTML表单,若干个保留所返回数据的元素,以及指向一段JavaScript的链接:

AlfredsFutterkiste

North/South

WolskiZajazd

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1