有时我们在Post的Ajax请求时还是需要一个Get的请求,但Ajax在Jquery封装的Get,Post都是默认异步的,要想同步还是得更加底层,于是有了下面的代码,其实还有更好的方法,
或者在全局设置Ajax属性
再用post,get就是同步的了
网上也有,Url及内容贴在最下面:
但同时要注意一个关于ajax返回的问题:
这个ajax不能从if(data.code != 1){return false} ,是有原因的:那里返回没有用,要的是这个函数的返回值!
以下来自:http://hi.baidu.com/xlianbo1988/blog/item/80a7ed6022b406d6e7113a91.html
由于jquery里默认ajax调用是异步的,所以在一些需要同步执行的场合就会出问题,如我有一个表单,我想在提交它之前对里面的一个文本框进行验证(要提交到服务器上连接数据库验证的),就会出现提交的时候还没等服务器返回验证结果,表单已经被提交了。
解决方法有
1.直接在$.ajax()中设置async: false
$.ajax({
type: "POST", //http请求方式
url: "XMLServer", //服务器段url地址
data: "username=" + username, //发送给服务器段的数据
dataType: "html", //告诉JQuery返回的数据格式
success: callback, //定义交互完成,并且服务器正确返回数据时调用的回调函数
async: false
});
2.使用$.ajaxSetup({async: false});
或者在全局设置Ajax属性
再用post,get就是同步的了
网上也有,Url及内容贴在最下面:
但同时要注意一个关于ajax返回的问题:
这个ajax不能从if(data.code != 1){return false} ,是有原因的:那里返回没有用,要的是这个函数的返回值!
以下来自:http://hi.baidu.com/xlianbo1988/blog/item/80a7ed6022b406d6e7113a91.html
由于jquery里默认ajax调用是异步的,所以在一些需要同步执行的场合就会出问题,如我有一个表单,我想在提交它之前对里面的一个文本框进行验证(要提交到服务器上连接数据库验证的),就会出现提交的时候还没等服务器返回验证结果,表单已经被提交了。
解决方法有
1.直接在$.ajax()中设置async: false
$.ajax({
type: "POST", //http请求方式
url: "XMLServer", //服务器段url地址
data: "username=" + username, //发送给服务器段的数据
dataType: "html", //告诉JQuery返回的数据格式
success: callback, //定义交互完成,并且服务器正确返回数据时调用的回调函数
async: false
});
2.使用$.ajaxSetup({async: false});
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/4982/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2014-3-13 17:23
评论列表
2014-7-28 16:32 | huxiaoguang
用鼠标事件不就行了吗,鼠标离开输入框时就验证
2012-2-23 13:03 | lucy53600
好帖子,声援不了就果断留下文字支持下.............
2012-2-22 14:29 | lucy19066
让人奔走相告曰须阅读的好帖
2012-2-22 02:21 | huiercs14565
一直这么难可能是不能做的事吧
2012-2-19 11:17 | hxngb6vf
楼主说得好,支持一下
2012-2-19 09:46 | yuanmai02096
想想那些就可气总有一天会消失的
2012-2-19 09:45 | yuanmai43897
想想那些就可气总有一天会消失的
2012-2-19 06:19 | thank480
原来是这样啊
2012-2-19 02:12 | hxngb5bf
要看要看。謝謝分享哦
2012-2-17 02:03 | hxngb8mf
支持楼主,长见识了
分页: 1/1 1