100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Jquery点击按钮 异步和同步提交表单

Jquery点击按钮 异步和同步提交表单

时间:2020-08-04 15:08:14

相关推荐

Jquery点击按钮 异步和同步提交表单

php教程|PHP开发

Jquery

php教程-PHP开发

最近在开发一个jsp学生信息管理系统,由于刚刚接触jsp,遇到问题比较多,特此记录与大家分享。

日程安排管理源码,ubuntu解包命令,tomcat免安装闪退,杭州爬虫排名,php虚拟币网站源码,大朗seo关键词优化价格lzw

Jquery ajax提交表单到servlet示例

android带数据库源码,Ubuntu下安装vrep,Python爬虫买车事例,赖php,外贸站seolzw

前台部分代码:

自制编程语言 源码,ubuntu添加双网卡,爬京东爬虫的,达内php 传智php,屏南seo公司lzw

ajax提交表单代码:

//增加学生,异步提交学生表单 $("#addStudents").click(function() { $.ajax({ url: "addStudents.do",//要请求的服务器url //这是一个对象,表示请求的参数,两个参数:method=ajax&val=xxx,服务器可以通过request.getParameter()来获取 //data:{method:"ajaxTest",val:value}, data: {name: $("#name").val(),studentId: $("#studentId").val(), }, async: true, //是否为异步请求 cache: false, //是否缓存结果 type: "POST", //请求方式为POST dataType: "json", //服务器返回的数据是什么类型 success: function(result){ //这个方法会在服务器执行成功是被调用 ,参数result就是服务器返回的值(现在是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提交表单

通过上面的配置后,我输入学生姓名然后提交表单,但是在myeclipse的控制台里并没有打印出姓名和字符串“123456789”,然后我就开始了疯狂的检查,检查了n遍,还是不知道错误出现在哪里,一次偶然的机会我发现了问题所在。我在ajax代码块后加了个alert()语句,奇迹出现了,浏览器弹出相应内容,myeclipse的控制台里打印出姓名和字符串“123456789”,这让我很是疑惑,在查阅大量博客和官方文档后,我才明白一切都是JQuery ajax的同步和异步提交的原因。

先来了解下JQuery ajax方法:

异步的理解:当代码执行到ajax部分时,它与ajax之后的外部代码是一起执行的,假如此时有外部代码要用到ajax中的返回值,而ajax的async属性为true(即此时ajax为异步),那么后续的外部代码是不可能能拿到ajax的返回值的,只有设置为同步即ajax的async属性为true,执行完ajax部分时,再接着执行后续代码时,才会在关系上产生连续性,则这样才能拿到其返回值。

然后我就将async设置为false,问题真的解决了,但是还是不知道为什么添加了alert语句即使是异步也可以打印出姓名和字符串?

继续查阅资料我自己的总结如下(欢迎各位大牛指点):

1、async:true时:当点击提交按钮时,执行点击事件里的代码语句,执行到ajax时,由于是异步执行,所以并不会阻塞后面语句的执行,因为后面没有语句了,所以可能由于ajax还没来得及执行完点击事件就结束了,自然就没有打印出姓名和字符串。如果在ajax后添加alert语句,点击事件就会被阻塞到这里,这时ajax就有充足的时间执行,所以控制台就能打印出姓名和字符串。我尝试去除外层的点击事件,直接执行ajax,这时不论同步或者异步都可以打印出姓名和字符串,可以证明我的猜想。

2、async:false时:当点击提交按钮时,也会执行点击事件里的代码语句,执行到ajax时,由于是同步执行,所以必须等ajax成功返回后才继续执行后面的代码,自然就能打印出姓名和字符串。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。