采用ajax提交POST数据的例子

来源:互联网 发布:profili软件介绍 编辑:程序博客网 时间:2024/05/18 03:12

问题描述


我们将一个form中的input和checkbox中的数据异步提交到PHP服务器,经过处理之后传回。


提交之后显示的位置:



难点分析


采用from表单的onsubmit属性阻止表单的提交


[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <form action="http://www.baidu.com" onsubmit="return check()">  

通过check函数的return false;操作阻止表单的提交,实现不刷新提交数据的目的。

获取复选框选中的选项的值


checkbox标签部分:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <input type="checkbox" name="checkbox" id="multi-choiceA" value="A">选项A<br/>  
  2.   
  3. <input type="checkbox" name="checkbox" id="multi-choiceB" value="B">选项B<br/>  
  4.   
  5. <input type="checkbox" name="checkbox" id="multi-choiceC" value="C">选项C<br/>  
  6.   
  7. <input type="checkbox" name="checkbox" id="multi-choiceD" value="D">选项D<br/>  


javascript处理部分:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. var str = document.getElementsByName("checkbox");   
  2. var answer = "";  
  3. for(var i=0;i<str.length;i++)  
  4. {  
  5.     if(str[i].checked == true)   
  6.     {   
  7.         answer += str[i].value;   
  8.     }   
  9. }  
  10. if(answer == "")alert('请勾选答案,然后提交');  
  11. else  
  12. {   //用户勾选了相关答案,进行相关处理  
  13.     var xmlhttp;  

采用ajax技术与后台进行交互


[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. var xmlhttp;  
  2.         xmlhttp = new XMLHttpRequest();  
  3.         xmlhttp.open("POST","function.php",true);  
  4.         xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");  
  5.         xmlhttp.send("qid="+qid+"&answer="+answer);  
  6.   
  7.         xmlhttp.onreadystatechange=function()  
  8.           {  
  9.           if (xmlhttp.readyState==4 && xmlhttp.status==200)  
  10.             {  
  11.                 document.getElementById("myDiv").innerHTML=xmlhttp.responseText;  
  12.             }  
  13.           };  

完整代码

前台index.html

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <!doctype html>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8">  
  5. <title>Koastal</title>  
  6. </head>  
  7.   
  8. <body>  
  9. <form action="http://www.baidu.com" onsubmit="return check()">  
  10. 问题序号:<input type="text" id="qid"><br/>  
  11. 选项:<br/>  
  12.       <input type="checkbox" name="checkbox" id="multi-choiceA" value="A">选项A<br/>  
  13.   
  14.       <input type="checkbox" name="checkbox" id="multi-choiceB" value="B">选项B<br/>  
  15.   
  16.       <input type="checkbox" name="checkbox" id="multi-choiceC" value="C">选项C<br/>  
  17.   
  18.       <input type="checkbox" name="checkbox" id="multi-choiceD" value="D">选项D<br/>  
  19.   
  20.       <input type="submit" value="提交">  
  21. </form>  
  22.   
  23. <div id="myDiv"></div>  
  24.   
  25. <script type="text/javascript">  
  26.     que = "<?php echo $que;?>";  
  27.     answer = "<?php echo $answer;?>";  
  28.     function check()  
  29.     {  
  30.         var qid = document.getElementById("qid").value;  
  31.         var str = document.getElementsByName("checkbox");   
  32.         var answer = "";  
  33.         for(var i=0;i<str.length;i++)  
  34.         {  
  35.             if(str[i].checked == true)   
  36.             {   
  37.                 answer += str[i].value;   
  38.             }   
  39.         }  
  40.         if(answer == "")alert('请勾选答案,然后提交');  
  41.         else  
  42.         {   //用户勾选了相关答案,进行相关处理  
  43.             var xmlhttp;  
  44.             xmlhttp = new XMLHttpRequest();  
  45.             xmlhttp.open("POST","function.php",true);  
  46.             xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");  
  47.             xmlhttp.send("qid="+qid+"&answer="+answer);  
  48.   
  49.             xmlhttp.onreadystatechange=function()  
  50.               {  
  51.               if (xmlhttp.readyState==4 && xmlhttp.status==200)  
  52.                 {  
  53.                     document.getElementById("myDiv").innerHTML=xmlhttp.responseText;  
  54.                 }  
  55.               };  
  56.         }  
  57.   
  58.          return false;   
  59.   
  60.     }  
  61. </script>  
  62. </body>  
  63. </html>  

后台function.php
[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <!doctype html>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8">  
  5. <title>koastal</title>  
  6. </head>  
  7.   
  8. <body>  
  9. <?php  
  10.     $qid = intval($_POST["qid"]);  
  11.     $answer = trim($_POST["answer"]);  
  12.     echo "您提交的题目编号是".$qid.",答案是".$answer;  
  13. ?>  
  14. </form>  
  15. </body>  
  16. </html>  

效果显示:
阅读全文
0 0
原创粉丝点击