您的位置: 首页 > 技术文档 > 网络编程 > 如何使用ajax开发web应用程序
用MVC模型引导你的WEB设计思路 回到列表 asp编译成dll-图形化教程
 如何使用ajax开发web应用程序

作者:Sheneyan 时间: 2006-02-07 文档类型:翻译 来自:蓝色理想

第 1 页 如何使用ajax开发web应用程序 [1]
第 2 页 如何使用ajax开发web应用程序 [2]
第 3 页 如何使用ajax开发web应用程序 [3]
第 4 页 如何使用ajax开发web应用程序 [4]

作者: Jonathan Fenocchi
时间:2005.10.25
译者:Sheneyan
英文原文:
http://webreference.com/programming/javascript/jf/column15/

在这个系列的第四部分中,你将会学习如何在不刷新页面的前提下通过form来提交数据。 这能在很多方面发挥作用。让我们现从表单(form)的HTML开始,然后我们再给它加上javascript脚本,通过ajax提交表单。

请注意,在这篇文章中我会使用php来响应javascript提交的服务端请求,所以在文章中提及的代码需要保存为一个后缀为.php的文件并在一个支持php的服务器上运行。它没法直接在你的本地硬盘上工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>如何使用ajax开发web应用程序(4)</title>
<style type="text/css">
.note {
background: #ffa;
border: solid 1px #f30;
margin: 1em;
padding: 0.5em;
}
</style>
</head>
<body>
<form action="ajax_output.php" method="post"><fieldset>
<label>姓名: <input type="text" name="name"></label><br>
<label>出生地: <input type="text" name="born"></label><br>
<label><input type="submit" value="Submit form"></label>
</fieldset></form>
</body>
 
这个表单会提交到这个php文件:ajax_output.php--将接受数据并输出它。

<?php
if(isset($_POST)){
echo '<div class="note">';
if(isset($_POST['name']) && !empty($_POST['name'])){
echo '<p>你好, '.$_POST['name'].'.</p>';
}
if(isset($_POST['born']) && !empty($_POST['born'])){
echo '<p>你出生于风景如画的'.$_POST['born'].'!</p>';
}
echo '</div>';
}
?>

这个php文件将输出一个包含两个段落的DIV。如果文本域name填写了内容,将输出"你好, [你的名字]"。如果文本域born填写了内容,将会输出"你出生于风景如画的[出生地名]!",如果你两个空格都填了,那将输出两个消息到同一个DIV中。

该添加javascript了,下面是javascript代码以及说明。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>如何使用ajax开发web应用程序(4)</title>
<style type="text/css">
.note {
background: #ffa;
border: solid 1px #f30;
margin: 1em;
padding: 0.5em;
}
</style>
<script type="text/javascript">
function submitForm(f){
if(window.XMLHttpRequest){
var xmlReq = new XMLHttpRequest();
} else if(window.ActiveXObject) {
var xmlReq = new ActiveXObject('Microsoft.XMLHTTP');
}
var formData = '', elem = '';
for(var s=0; s<f.elements.length; s++){
elem = f.elements[s];
if(formData != ''){
formData += '&';
}
formData += elem.name+"="+elem.value;
}
xmlReq.onreadystatechange = function(){
if(xmlReq.readyState == 4){
document.getElementById('insert').innerHTML = xmlReq.responseText;
}
}
xmlReq.open(f.method, f.action, true);
xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlReq.send(formData);
return false;
}
</script>
</head>
<body>
<div id="insert"></div>
<form action="ajax_output.php" method="post" onsubmit="return submitForm(this)"><fieldset>
<label>姓名: <input type="text" name="name"></label><br>
<label>出生地: <input type="text" name="born"></label><br>
<label><input type="submit" value="提交表单"></label>
</fieldset></form>
</body>

查看示例

你先注意以下javascript标签部分。这是一个将在表单被提交的时候触发的函数(表单里的onsubmit事件句柄(event handler)将调用这个函数)。这个函数首先创建一个XMLHttpRequest,它用于传输数据到表单的action(ajax_output.ph[)。下一步,我们遍历每一个表单元素并将它们使用(&)连接起来以便于数据可以被正确地传送给action。接下来,我们创建了一个onReadyStateChange函数用于将这个id为insert的DIV和ajax_output.php传输回来的数据组合起来。然后我们打开表单的method(ajax_output.php)--用POST或者GET(在我们的ajax_output.php中,我们只接受POST的数据)--以及action (ajax_output.php)。我们需要设置正确的请求头(request header)以便于javascript能够发送经过URL编码的form数据(form urlencoded data)给ajax_output.php,最后就是让javascript发送数据了。

结论

这个脚本是非常通用并且在很多方面都很有用的,因为你能够将form里面的任何表单元素组合成数据并post给这个表单的action而不需要重新加载页面。你只需要简单的修改这个表单的action指向的文件,相应地修改和表单对应的输入域的名字以及如何处理数据。

关于作者

Jonathan Fenocchi(mail:jona#slightlyremarkable.com #换成@)是一个网络开发者,主攻web设计,客户端脚本,php脚本。
他的网站位于:http://www.slightlyremarkable.com

本文链接:http://www.blueidea.com/tech/program/2006/3214.asp 

出处:蓝色理想
责任编辑:moby

上一页 如何使用ajax开发web应用程序 [3] 下一页

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
浅谈flash web的结构
设计五原则
Web 表单设计原则和实践
关于中英文正文字体比较
网站程序员如何应对web标准
作者文章 更多作者文章
客户端模版的应用
[js效果] 图片加载进度实时显示
javascript的函数
ajax的缺点
用Google Sitemaps帮助你SEO
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
Photoshop绘制真实的黑莓手机
标记语言——为文字指定样式
NewWebPick第17期专业版发布
php设计模式介绍之装饰器模式
Windows组策略之软件限制策略
大木花谷
疯狂的程序员 第二十五回
疯狂的程序员 第二十四回
IE下中英文字体不能对齐原因及解决
有些标志很类似
栏目最新 栏目最新列表
火星人的耳机
公司正式宣布创业失败
用corelDEAW 12打造唇膏
二行代码解决全部网页木马
一行代码解决iframe挂马
Photoshop制作星空爆炸效果
CorelDraw 12打造休闲裤
Firework如何画特殊的切角图形
Firework打造韩式风格的手提袋
flash实例:打造佛光效果
 
>> 分页 首页 前页 后页 尾页 页次:4/41个记录/页 转到 页 共4个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文总共有 7 条评论,现在显示最新的 5 条。评分:- llllllllllllllllllll + 评分人数: 1 ,平均分: 5.00


nece001 Publish at 2006-4-20 17:29:20
xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data
这个好象有问题,取不到东西?????
nece001 Publish at 2006-4-20 17:27:16
我把例子弄下来,在我的机器上也是不行
Onlyfu Publish at 2006-3-11 20:57:34
貌似不行
老孤 Publish at 2006-2-8 18:29:09 评分5
禁止 JS 的客户端太少了。。。好经典的文章
leady27 Publish at 2006-2-8 15:51:27
ajax技术对于禁止JS的用户是行不通的。

查看全部评论

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
大师之路--Photoshop 完全解析
《超越CSS》新书上市
Don't Make Me Think 第2版
HTML与CSS入门经典(第7版)
《FLASH MX2004网站开发精粹》
《CSS入门经典》
《设计师谈网页设计思维》
作品集 更多内容

新京彩印 永昌古典家私 水果类网站 青花陶瓷按钮MadeInChina 昆明市旅游局英文版网站 中国风 ELLE 天都SOHO城网站