首页 > 开发 > AJAX > 正文

AJAX教程(8):AJAX 请求实例

2020-09-19 11:05:24
字体:
来源:转载
供稿:网友

我们已看到 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 占位符的内容就被响应文本来填充。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表