在Ajax中,向服务器端发送请求使用的是XMLHttpRequest对象,在XMLHttpRequest对象成功创建以后,就可以通过这个对象与服务器进行通信。
在向服务器发送请求之前,首先使用XMLHttpRequest对象的open方法建立对服务器的调用,然后才能向服务器发送请求信息。
在成功创建XMLHttpRequest对象以后,可以使用下面的JavaScript代码向服务器发送请求。___________________________________________________________________
【代码说明】
●第2行:调用11.2.1节介绍的createXMLHttpRequest()方法来创建XMLHttpRequest对象。新创建的XMLHttpRequest对象的名称为“XMLHttpReq”,在后面的程序中可以通过这个名称来访问XMLHttpRequest对象。(www.xing528.com)
●第3行:调用XMLHttpRequest对象的open方法向服务器发送请求。url是访问服务器资源的位置,例如,本例访问的服务器资源是“http://localhost:8080/ch10/SayHello”,那么就需要在url中填入上面这个Servlet的访问路径。
●第5行:但是当Ajax发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态,XMLHttpRequest对象提供了onreadyStateChange事件实现这一功能。这类似于回调函数的做法。onreadyStateChange事件可指定一个事件处理函数来处理XMLHttpRequest对象的执行结果。handleResponse是自定义的一个事件处理函数,用于处理服务器的响应内容,通常在事件中判断readyState的值是在请求完毕时才做处理的。handleResponse 11函数功能在11.2.4节做详细介绍。
●第7行:在传统的Web应用中,需要通过表单向服务器提交自己的输入信息,但是这种提交方式会刷新整个页面,而在Ajax中要实现的就是与服务器端的异步通信,所以不能使用表单向服务器发送请求信息。当请求内容比较少时,可以使用显式传参的方式,例如“http://localhost:8080/ch10/SayHello?name=jdgeorge”,访问的是SayHello这个Servlet,而且在经历服务器调用的同时传递了一个name=jdgeorge的参数。这种传值方式和一般Web页面中通过超链接传值方式的原理是一样的。在使用这种方式像服务器发送信息时,将“http://localhost:8080/ch10/SayHello?name=jdgeorge”赋给第3行代码中open方法的url参数即可,send方法中的参数可以用null代替。当向服务器发送的内容比较多而且格式比较复杂时,使用显式传参的方式就不现实了。在这种情况下,可以把要发送的内容组织成XML文档,然后通过send("content")就可以把参数的内容发送到服务器,其中content参数就是XML文档的内容。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。