当前位置: 首页 > 图文教程 > 网络编程 > Javascript > AJAX教程(8):AJAX 请求实例

Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
JS Array对象入门分析
javascript typeof的用法与typeof运算符介绍[详细]
js CSS操作方法集合
让任务管理器中的CPU跳舞的js代码
ajax无刷新动态调用股票信息(改良版)
js Clip的奇思妙想之文字拼接效果
js Clip奇思妙想之多彩渐变字效果
JS 创建对象(常见的几种方法)
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
JS提交并解析后台返回的XML的代码
初学Javascript的一些总结
JS 继承实例分析
js form action动态修改方法
仿163填写邮件地址自动显示下拉(无优化)
js判断对象是否是某一类型
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
js 目录列举函数
js颜色选择器代码[firefox不支持]
js wmp操作代码小结(音乐连播功能)

Javascript 中的 AJAX教程(8):AJAX 请求实例


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 285 ::
收藏到网摘: n/a

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

AJAX Suggest实例

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

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

Suggestions:

例子解释 - HTML表单

表单的 HTML 代码:

<form>
First Name:<input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>

正如您看到的,这是一个简单的带有名为 "txt1" 输入域的 HTML 表单。输入域的事件属性定义了一个由 onkeyup 事件触发的函数。

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

当用户输入数据时,名为 "showHint()" 的函数就会被执行。函数的执行是由 "onkeyup" 事件触发的。另外需要说明的是,当用户在文本域中输入数据时把手指从键盘按键上移开时,函数 showHint 就会被调用。

例子解释 - showHint() 函数

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

此函数包含以下代码:

function showHint(str)
{ if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("您的浏览器不支持AJAX!"); return; }
var url="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 对象的问题。

这是此函数的代码:

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;
}

例子解释 - stateChanged() 函数

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

function stateChanged()
{ if (xmlHttp.readyState==4) { document.getElementById("txtHint").innerHTML=xmlHttp.responseText; }
}

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

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