ajax设置同步(for循环ajax带来的问题这里使用的是jquery封装的ajaxajax设置了同步,当快速执行ajax会出问题)

本文目录
- for循环ajax带来的问题这里使用的是jquery封装的ajaxajax设置了同步,当快速执行ajax会出问题
- ajax同步方式提交请求,beforeSend不起作用,即IE假死 代码如下:
- JQuery--->Ajax请求,Session同步问题
- ajax同步警告
- ajaxSubmit怎么同步提交我这个success接收不到action的返回值,不知道和同步异步是否有关在线等求解
- ajax能同步刷新吗
- 如何同时处理两个ajax请求
- 怎么判断ajax传值的数据为空
for循环ajax带来的问题这里使用的是jquery封装的ajaxajax设置了同步,当快速执行ajax会出问题
首先你的这个实现逻辑就有问题,怎么可能会想到用for 去做n次ajax提交呢,你得知道你现在上面写的这种ajax提交方式为异步方式,何为异步,就是当ajax请求发出后当前逻辑就认为你的这次请求完成了,当前逻辑会继续往下执行而不会去管你的这个ajax请求是否执行完并成功返回的,如你for了10次,那么for只会管执行10个ajax提交,因为ajax是异步方式,所以你在for里面无法控制你的这10次ajax是否都正常的执行并返回的,这10次ajax提交的返回是无序的。所以一般都不会用这样的逻辑来处理问题,如果实在非得要用这种逻辑,那么得将ajax请求方式改成同步方式,即将async:false 改成 async:true,这样就可能如你的预期,一个ajax执行完正常返回后才行下一个ajax,
==================================================================
哦,那是我记错咯,如果你实在要用这种实现逻辑的话,我倒建议你不要这么写,类似下面这种写法应该好处理些的:
for (var i=0; i《9; i++)
{
var post_data = new Array(’rand’:new Date().getMilliseconds())
var post_retn = eval(’(’+ $.ajax({type:’post’, data:post_data, url:’xxxxx&rand=’ + new Date().getMilliseconds(), async:false}).responseText +’)’);
alert(post_retn);
}
ajax同步方式提交请求,beforeSend不起作用,即IE假死 代码如下:
这个原因就是ajax的async设置为false时同步提交。浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉。也就是你这个问题beforeSend里面好像没有执行。其实,已经进beforeSend里面了。只是,你里面的样式设置被阻塞掉了。解决方案:把它改成异步即可async:true。(默认,就是异步。可以直接省略不写。直接把async:false去掉即可)
JQuery--->Ajax请求,Session同步问题
这个问题按理说应该会改变的,无论是异步还是同步的调用。如果程序没错误的话,我怀疑
1.浏览器的问题。你是不是用的IE,内核是不是IE8呢?如果是的话建议你用用别的浏览器试试看,例如火狐,google等,或者卸载 KB976662 补丁(IE的补丁)
2,缓存问题,也就是说在你这个方法调用之前这个session是空值,然后缓存了就一直是空值。解决办法就是在你的请求URL后面加一个时间戳 例如"Ajax.aspx?act=Edit&r="+ Math.random();
3也或许是你的session丢失了,可能原因就是超时了,或者无故丢失,如果后者的话
建议你修改配置文件
例如:《sessionState mode=’StateServer’ stateConnectionString=’tcpip=127.0.0.1:’ sqlConnectionString=’data source=127.0.0.1;Trusted_Connection=yes’ cookieless=’true’ timeout=’60’/》
这样的话除非你的电脑蹦了,否则session不会丢失的
以上只是猜测不知能否帮到你
ajax同步警告
ajax出现的同步警告是无法避免的,其实是造成主线程锁死主要还是XMLHttpRequest没有设置超时处理。
jquery ajax异步的执行方案:
1、添加async:false.即修改为同步,代码如下:
function getAjaxReturn()
{
var bol=false;
$.ajax({
type:"POST",
async:false,
***隐藏网址***
data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"《img src=’images/ok.gif’/》《b》《font color=’#ffff00’》该用户名可以使用《/font》《/b》",false)
// return true;
bol=true;
}
else
{
showtipex(vusername.id,"《img src=’images/cancel.gif’/》《b》《font color=’#ffff00’》该用户已被注册《/font》《/b》",false);
vusername.className="bigwrong";
//return false;
}
}
});
return bol;
}
2、 通过传入一个函数解决这个问题,代码:
function getAjaxReturn(success_function,fail_function)
{
var bol=false;
$.ajax({
type:"POST",
***隐藏网址***
data:"username="+vusername.value,
success:function(msg){
if(msg=="ok"){
showtipex(vusername.id,"《img src=’images/ok.gif’/》《b》《font color=’#ffff00’》该用户名可以使用《/font》《/b》",false)
success_function(msg);
}
else
{
showtipex(vusername.id,"《img src=’images/cancel.gif’/》《b》《font color=’#ffff00’》该用户已被注册《/font》《/b》",false);
vusername.className="bigwrong";
fail_function(msg);
//return false;
}
}
});
function success_function(info)
{
//do what you want do
alert(info);
}
funciont fail_function(info)
{
//do what you want do
alert(info);
}
ajaxSubmit怎么同步提交我这个success接收不到action的返回值,不知道和同步异步是否有关在线等求解
$.ajax({ url: "test.html",
cache: true,
type: "POST",
async: false,
//同步请求,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行
dataType: "json",//返回的数据是json格式的
data: {"id":123} ,//这个传递到后台的数据,如果是get方式的可以直接把值放到url后面
success: function(data){
alert(data);//成功调用后台返回的对象
}});
ajax还有挺多属性的,具体你参考w3school吧。
你在表单里增加个点击事件,然后写个方法把ajax放到方法里面,不刷新的提交表单数据传到后台了
也可以给form加个id,然后$("#id").submit();就行了
ajax能同步刷新吗
$.ajax({
type: "post",
url: "path",
cache:false,
async:false,
success: function(xmlobj){
}
});
async这个参数就是用来控制同步异步的,默认情况它就是true,异步,如果设置为false就是同步。
如何同时处理两个ajax请求
ajax 可以设置同步和异步,你直接把两个Ajax设置为请求就行了,如果怕麻烦,直接用jquery 的$.get , $.post , $.ajax 方法,具体参数根据这3个的方法设置即可, 只是其中的 async:false 需要这样子设置
怎么判断ajax传值的数据为空
var data = null;
function getData(){
$.ajax({
type : "post",
url : "${ctx}/screen/getOpt",
dataType : "json",
async: false,//设置成同步
success : function(data){\
$("#optTable tbody").html("");
insertDiv(data);
data = data;
}
});
rentun data;
}
//ajax需要设置同步,才能获取data

本文相关文章:
mysql怎么建立数据库(如何用NavicatforMySql创建数据库与数据表)
2026年10月4日 23:50
电脑自带的word用不了怎么办(升级了win10之后,原本电脑里的Word和Excel打不开了)
2026年8月25日 04:00
oracle11g安装和配置(oracle数据库安装在什么地方)
2026年10月10日 09:10
python中的in是什么意思(python中for i % 7 in [5,0]是什么意思)
2026年10月1日 21:00
eof在python语言中表示什么(在Python中,“EOFError: EOF when reading a line”怎么解决)
2026年9月28日 10:10
keyboard operator用英语怎么说(keyboardperator用英语怎么说)
2026年9月25日 15:00
witheditor是什么状态(文章已提交就是 with editor是什么状态)
2026年9月9日 02:10
import语句(import语句是将对应的java源文件拷贝到此处执行对还是错为什么 包是java中描述操作系统)
2026年9月6日 10:30
更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10
