欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

ajax http请求如何使用?ajax如何请求服务器?(附实例解析)

程序员文章站 2022-05-20 13:06:31
...
本篇文章主要的讲述了关于ajax的基础知识,ajax的历史情况介绍,还有ajax的基础使用情况,现在让我们一起来看这篇文章吧

AJAX 基础
AJAX 指异步 JavaScript 及 XML (Asynchronous JavaScript And XML )。
AJAX 是一种在 2005 年由 Google 推广开来的编程模式。
AJAX 不是一种新的编程语言,而是一种使用现有标准的新方法。
通过 AJAX ,你可以创建更好、更快以及更友好的 WEB 应用程序。
AJAX 基于 JavaScript 和 HTTP 请求(HTTP requests )。
AJAX 简介
AJAX 指异步 JavaScript 及 XML (Asynchronous JavaScript And XML )。
您应当具备的基础知识
在继续学习之前,您需要对下面的知识有基本的了解:
* HTML / XHTML
* JavaScript
如果您希望首先学习这些项目,请在我们的首页访问这些教程。
AJAX = 异步 JavaScript 及 XML ( Asynchronous JavaScript and XML )
AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。
通过 AJAX ,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个
对象,您的 JavaScript Web 服务器交换数据。 可在不重载页面的情况与
AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而
不是整个页面。
AJAX 可使因特网应用程序更小、更快,更友好。
AJAX 是一种独立于 Web 服务器软件的浏览器技术。
AJAX 基于 Web 标准
AJAX 基于下列 Web 标准:
* JavaScript
* XML
* HTML
* CSS
在 AJAX 中使用的 Web 标准已被良好定义,并被所有的主流浏览器支持。AJAX 应用程序独立于浏览器和平台。
AJAX 事关更优秀的应用程序
Web 应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。
不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。
通过 AJAX ,因特网应用程序可以变得更完善,更友好。(想看更多就到PHP中文网AJAX开发手册栏目中学习)

AJAX Http 请求
A JAX 使用 Http 请求
在传统的 JavaScript 编程中,假如您希望从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息
的话,就必须利用一个 HTML 表单向服务器 GET 或 POST 数据。而用户则需要单击“ 提交” 按钮来发送/ 获取信
息,等待服务器的响应,然后一张新的页面会加载结果。
由于每当用户提交输入后服务器都会返回一张新的页面,传统的 web 应用程序变得运行缓慢,且越来越不友好。
通过利用 AJAX ,您的 JavaScript 会通过 JavaScript 的 XMLHttpRequest 对象,直接与服务器来通信。
通过使用 HTTP 请求,web 页可向服务器进行请求,并得到来自服务器的响应,而不加载页面。用户可以停留在同
一个页面,他或她不会注意到脚本在后台请求过页面,或向服务器发送过数据。
XMLHttpRequest 对象
通过使用 XMLHttpRequest 对象,web 开发者可以做到在页面已加载后从服务器更新页面!
在 2005 年 AJAX 被 Google 推广开来(Google Suggest )。
Google 建议使用 XMLHttpRequest 对象来创建一种动态性极强的 web 界面:当您开始在 Google 的搜索框中输入
查询时,JavaScript 会向某个服务器发出这些字词,然后服务器会返回一系列的搜索建议。
XMLHttpRequest 对象得到下列浏览器的支持:Internet Explorer 5.0+ 、Safari 1.2 、Mozilla 1.0 / Firefox、Opera 8+ 以及 Netscape 7 。

您的第一个 AJAX 应用程序
为了让您理解 AJAX 的工作原理,我们将创建一个小型的 AJAX 应用程序。
首先,我们需要一个带有两个文本框的 HTML 表单:用户名和时间。用户名文本框由用户填写,而时间文本框使用
AJAX 进行填写。
此 HTML 文件名为 "testAjax.htm" (请注意这个 HTML 表单没有提交按钮!):

<html>
<body>
<form name="myForm">
用户: <input type="text" name="username" />
时间: <input type="text" name="time" />
</form>
</body>
</html>

AJAX 浏览器支持
AJAX - 浏览器支持
AJAX 的要点是 XMLHttpRequest 对象。
不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。
IE 浏览器使用 ActiveXObject ,而其他的浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象。
如需针对不同的浏览器来创建此对象,我们要使用一条 "try and catch" 语句。您可以在我们的 JavaScript 教程
中阅读更多有关 try 和 catch 语句 的内容。
让我们用这段创建 XMLHttpRequest 对象的 JavaScript 来更新一下我们的 "testAjax.htm" 文件:

<html>
<body>
<script type="text/javascript">
function ajaxFunction()
 {
        var xmlHttp;
        try{           
                    // Firefox, Opera 8.0+, Safari
                    xmlHttp=new XMLHttpRequest();
             }            
       catch (e){                 
                   // Internet Explorer                                
                   try{
                 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                        }
                   catch (e){
                                    try{
                            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                                         }
                                   catch (e){
               return false;
                                                  }    
                                  }
                      }
}
</script>
<form name="myForm">
用户: <input type="text" name="username" />
时间: <input type="text" name="time" />
</form></body>
</html>

例子解释:
首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。
然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对 Firefox 、Opera 以及 Safari 浏览器。
假如失败,则尝试针对 Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP") ,假如也不
成功,则尝试针对 Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP") 。
假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持
AJAX 的提示。
注释:上面这些浏览器定制的代码很长,也很复杂。不过,每当您希望创建 XMLHttpRequest 对象时,这些代码就
能派上用场,因此您可以在任何需要使用的时间拷贝粘贴这些代码。上面这些代码兼容所有的主流浏览器:
Internet Explorer 、Opera 、Firefox 以及 Safari 。
AJAX - XMLHttpRequest 对象
AJAX - 更多有关 XMLHttpRequest 对象的知识
在向服务器发送数据之前,我们有必要解释一下 XMLHttpRequest 对象的三个重要的属性。
onreadystatechange 属性
onreadystatechange 属性存有处理服务器响应的函数。下面的代码定义一个空的函数,可同时对
onreadystatechange 属性进行设置:
xmlHttp.onreadystatechange=function()
{
// 我们需要在这里写一些代码
}
readyState 属性
readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
这是 readyState 属性可能的值:
状态描述
0
请求未初始化(在调用 open() 之前)
1
请求已提出(调用 send() 之前)
2
请求已发送(这里通常可以从响应得到内容头部)
3
请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应)
4
请求已完成(可以访问服务器响应并使用它)

我们要向这个 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据)

xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
//从服务器的response获得数据
}
}
responseText 属性
可以通过 responseText 属性来取回由服务器返回的数据。
在我们的代码中,我们将把时间文本框的值设置为等于 responseText :
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
AJAX - 请求服务器
AJAX - 向服务器发送一个请求
要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。
open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST )。第二个参数规定服务器端

脚本的 URL 。第三个参数规定应当对请求进行异步地处理。
send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 ASP 文件位于相同的目录,那么代码是这样的:
xmlHttp.open("GET","time.asp",true);
xmlHttp.send(null);

现在,我们必须决定何时执行 AJAX 函数。当用户在用户名文本框中键入某些内容时,我们会令函数“ 在幕后”

执行。

<html>
<body>
<script type="text/javascript">
function ajaxFunction()
{
    var xmlHttp;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
        try
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
            alert("您的浏览器不支持AJAX!");
            return false;
        }
    }
}
xmlHttp.onreadystatechange=function()
{
    if(xmlHttp.readyState==4)
    {
        document.myForm.time.value=xmlHttp.responseText;
    }
}
xmlHttp.open("GET","time.asp",true);
xmlHttp.send(null);
}
</script>
<form name="myForm">
用户: <input type="text" name="username" onkeyup="ajaxFunction();"/>
时间: <input type="text" name="time" />
</form>
</body>
</html>

AJAX - 服务器端的脚本
现在,我们要创建可显示当前服务器时间的脚本。
responseText 属性会存储从服务器返回的数据。在这里,我们希望传回当前的时间。这是 "time.asp" 的代码:

<%response.expires=-1
response.write(time)%>

注释:Expires 属性可设置在页面缓存失效前页面被缓存的时间(分钟)。Response.Expires=-1 指示页面不会被
缓存。
运行您的 AJAX 应用程序
请在下面的文本框中键入一些文本,然后单击时间文本框:
用户 : 时间 :
时间文本框可在不加载页面的情况下从 "time.asp" 获得服务器的时间!

本篇文章到这就结束了(想看更多就到PHP中文网AJAX使用手册栏目中学习),有问题的可以在下方留言提问。

以上就是ajax http请求如何使用?ajax如何请求服务器?(附实例解析)的详细内容,更多请关注其它相关文章!

相关标签: ajax xmlhttprequest