手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

如何在 Oracle JDeveloper 中进行 Ajax 编程

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

更改为

<body>

<form name="form1" action="">
<input type="button" value="Press Me" onclick="doTheAjaxThing();"/>
<input type="text"id="name" name="name"/>
</form>
<div id="message" class="message"></div>

</body>

现在,该 HTML 文件中包含一个额外的文本域,可供用户键入输出字符串。名称输入域的 id 属性为 "name",用户可以使用浏览器的 DOM 树通过 JavaScript 对其进行访问。文本域的确切位置是 document.form1.name

最后更改的内容是 class 属性,该属性被添加到 <div> 元素,以便由样式表文件进行处理。

10. 转至 helloAjax.html 文件的设计视图。在 Application Navigator 中选择 helloAjax.css 条目,然后将该条目拖放到 HTML 页面上。此操作会在运行时创建由 HTML 页面到样式表的引用。
11.
再次打开源代码视图中的 helloAjax.html 文件,并在 <head></head> 元素对之间查找 doTheAjaxThing() 方法。
12.
将以粗体突出显示的第一行添加到 JavaScript 函数中,然后使用突出显示的第二个代码行替换当前的 requestObject.open() 方法。
function doTheAjaxThing(){

var requestObject;

var PAGE_SUCCESS = 200;

var param="name=" (document.form1.name.value.length >0 ?document.form1.name.value:"nobody");

requestObject = xmlHttpRequestHandler.createXmlHttpRequest();

requestObject.open("Get","helloajax?" param,false);

requestObject.send(null);

  ...

第一行创建一个变量参数,该参数读取输入文本域的值。为确保该域的值不为空,您可以使用 JavaScript 测试输入字符串的长度。如果域值确实为空,则使用 "nobody"。

requestObject.open 方法调用目前引用 helloajax(服务器端 HTTP Servlet 的 web.xml 名称),而不是 helloajax.txt 文件。由于该请求为 GET 请求,因此 name 请求参数使用问号 '?' 添加到 servlet 引用中。如您所见,从 XmlHttpRequest 的观点来看,由调用服务器上的静态文件转变为调用 servlet 所需进行的更改很少。

13.

您还可以将标题中的 HTML <tile> 元素更改为

<title>Hello Ajax from servlet</title>

            

            
14.

保存您的工作,然后运行 helloAjax.html 文件。

您将发现,第一次运行应用程序时有轻微的延迟现象。这是由 servlet 所需的初始启动时间造成的。该延迟会给用户造成不好的印象,因此在下一部分中,您将把同步 XmlHttpRequest 调用更改为异步调用。

使 Ajax 成为异步应用程序

异步请求允许应用程序用户在等待服务器响应的同时继续进行自己的工作。即使用户不能在服务器响应前继续自己的工作,使用异步请求的方法也比同步调用更有利。例如,为避免用户将注意力集中在按下的按钮上,您可以在屏幕上显示一些可供最终用户消遣的小部件,如进度条。这部分上机练习不会涉及到上述内容,我们仅把同步调用更改为异步调用。

1.

使用以下语句替换在 helloAjax.html 页面中定义 doTheAjaxThing() 函数的当前 JavaScript 语句,使请求成为异步调用:

<script type="text/javascript">

var requestObject;

var READY_STATE_COMPLETE = 4;

var PAGE_SUCCESS = 200;



function doTheAjaxThing(){

param="name=" (document.form1.name.value.length >0 ?document.form1.name.value:"nobody");

requestObject = xmlHttpRequestHandler.createXmlHttpRequest();



requestObject.onreadystatechange=onReadyStateChangeResponse;



requestObject.open("Get","helloajax?" param,true);

requestObject.send(null);

  }



function onReadyStateChangeResponse(){

var ready = requestObject.readyState;

var status = requestObject.status;



if(ready==READY_STATE_COMPLETE && status == PAGE_SUCCESS){

var div_handle = document.getElementById("message");

//check if DIV element is found

if(div_handle){

div_handle.innerHTML ='
</' 'br>' requestObject.responseText; } } } </script>

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!