精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>ajax教程>正文

如何使用ajax开发web应用程序[4]


来源: 时间:06-12-24 点击: 点击这里收藏本文
作者:Jonathan Fenocchi 
译者:Sheneyan(子乌) 
英文原文:http://webreference.com/programming/javascript/jf/column15/ 
中文译文:http://sheneyan.com/g.php/tech/article/ajax/4.html 

  在这个系列的第四部分中,你将会学习如何在不刷新页面的前提下通过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发送数据了。
9 7 3 1 2 4 8 :

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.