php 表单 同步,Jquery点击按钮 异步和同步提交表单
最近在開發(fā)一個jsp學(xué)生信息管理系統(tǒng),由于剛剛接觸jsp,遇到問題比較多,特此記錄與大家分享。
Jquery ajax提交表單到servlet示例
前臺部分代碼:
| 姓名 | 學(xué)號 | ||||
| ???? | |||||
ajax提交表單代碼://增加學(xué)生,異步提交學(xué)生表單
$("#addStudents").click(function() {
$.ajax({
url: "addStudents.do",//要請求的服務(wù)器url
//這是一個對象,表示請求的參數(shù),兩個參數(shù):method=ajax&val=xxx,服務(wù)器可以通過request.getParameter()來獲取
//data:{method:"ajaxTest",val:value},
data: {
name: $("#name").val(),
studentId: $("#studentId").val(),
},
async: true, //是否為異步請求
cache: false, //是否緩存結(jié)果
type: "POST", //請求方式為POST
dataType: "json", //服務(wù)器返回的數(shù)據(jù)是什么類型
success: function(result){ //這個方法會在服務(wù)器執(zhí)行成功是被調(diào)用 ,參數(shù)result就是服務(wù)器返回的值(現(xiàn)在是json類型)
if(result){
alert("true");
}else{
alert("false");
}
}
});
});
web.xml配置代碼:
This is the description of my J2EE component
This is the display name of my J2EE component
addStudents
org.cms.students.addStudents
addStudents
/addStudents.do
addStudents.java代碼(采用POST提交方式):public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
String name=request.getParameter("name");
System.out.println(name);
System.out.println("123456789");
out.print("false");
}
ajax提交表單
通過上面的配置后,我輸入學(xué)生姓名然后提交表單,但是在myeclipse的控制臺里并沒有打印出姓名和字符串“123456789”,然后我就開始了瘋狂的檢查,檢查了n遍,還是不知道錯誤出現(xiàn)在哪里,一次偶然的機(jī)會我發(fā)現(xiàn)了問題所在。我在ajax代碼塊后加了個alert()語句,奇跡出現(xiàn)了,瀏覽器彈出相應(yīng)內(nèi)容,myeclipse的控制臺里打印出姓名和字符串“123456789”,這讓我很是疑惑,在查閱大量博客和官方文檔后,我才明白一切都是JQuery ajax的同步和異步提交的原因。
先來了解下JQuery ajax方法:
異步的理解:當(dāng)代碼執(zhí)行到ajax部分時,它與ajax之后的外部代碼是一起執(zhí)行的,假如此時有外部代碼要用到ajax中的返回值,而ajax的async屬性為true(即此時ajax為異步),那么后續(xù)的外部代碼是不可能能拿到ajax的返回值的,只有設(shè)置為同步即ajax的async屬性為true,執(zhí)行完ajax部分時,再接著執(zhí)行后續(xù)代碼時,才會在關(guān)系上產(chǎn)生連續(xù)性,則這樣才能拿到其返回值。
然后我就將async設(shè)置為false,問題真的解決了,但是還是不知道為什么添加了alert語句即使是異步也可以打印出姓名和字符串?
繼續(xù)查閱資料我自己的總結(jié)如下(歡迎各位大牛指點):
1、async:true時:當(dāng)點擊提交按鈕時,執(zhí)行點擊事件里的代碼語句,執(zhí)行到ajax時,由于是異步執(zhí)行,所以并不會阻塞后面語句的執(zhí)行,因為后面沒有語句了,所以可能由于ajax還沒來得及執(zhí)行完點擊事件就結(jié)束了,自然就沒有打印出姓名和字符串。如果在ajax后添加alert語句,點擊事件就會被阻塞到這里,這時ajax就有充足的時間執(zhí)行,所以控制臺就能打印出姓名和字符串。我嘗試去除外層的點擊事件,直接執(zhí)行ajax,這時不論同步或者異步都可以打印出姓名和字符串,可以證明我的猜想。
2、async:false時:當(dāng)點擊提交按鈕時,也會執(zhí)行點擊事件里的代碼語句,執(zhí)行到ajax時,由于是同步執(zhí)行,所以必須等ajax成功返回后才繼續(xù)執(zhí)行后面的代碼,自然就能打印出姓名和字符串。
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的php 表单 同步,Jquery点击按钮 异步和同步提交表单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql注入漏洞语句,web安全之sq
- 下一篇: 狠一点污一点的真心话大全合集110个