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

Javascript
javaScript 数值型和字符串型之间的转换
从父页面读取和操作iframe中内容方法
IE DOM实现存在的部分问题及解决方法
jqPlot Option配置对象详解
jquery JSON的解析方式
JavaScript 捕获窗口关闭事件
xml 封装与解析(javascript和C#中)
JavaScript 设计模式学习 Singleton
JavaScript 设计模式学习 Factory
javascript CSS画图之基础篇
JavaScript 获取事件对象的注意点
JavaScript Konami Code 实现代码
Google Map API更新实现用户自定义标注坐标
JavaScript this 深入理解
javascript EXCEL 操作类代码
window.parent调用父框架时 ie跟火狐不兼容问题
关于取不到由location.href提交而来的上级页面地址的解决办法
JS input 数字验证代码
网页全屏显示代码说明分析
JS 学习笔记 防止发生命名冲突

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 108 ::
收藏到网摘: 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 占位符的内容就被响应文本来填充。