jquery ajax请求时如果页面卡主 多次发出相同请求 如何处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax请求时如果页面卡主 多次发出相同请求 如何处理相关的知识,希望对你有一定的参考价值。

假如 保存一条数据
当页面点击保存时,由于电脑还在执行其他线程,导致页面卡主,这时多次点击保存,发出ajax请求后,action端在处理的时候,先是判断名称是否存在,如果存在则返回页面error信息,如果不存在则保存到数据库
现在由于页面卡主,多次点击保存后,等页面有响应时,action端接到多次清楚,发现 保存了多个名称相同的记录,请问有什么好的办法解决这种问题没。
我自己想过 可以在 判断名称是否存在 和 保存 这段代码 加上同步,不知道还有没有更好的办法

参考技术A 有,现在流行的做法都是点击保存后进行锁屏,例如说显示个“正在保存中”的字样,避免因为异步执行的原因,用户可以重复点击提交按钮。

不存在遮罩前就点击第二次按钮的担忧,因为js也是要顺序执行的,没有执行完代码你操作不了
参考技术B 可以在页面加一个请求等待提示图层(默认隐藏),点击页面保存按钮时显示图层,ajax请求完成后的回调函数里再隐藏图层。这样就可以避免用户不停的发出ajax请求了。希望对你有所帮助! 参考技术C 加个标志位flag 初始化0 点保存以后就设置成1 保存的时候判断是否为1 是1的话表示已经保存过追问

有个问题就是点击保存后 有返回结果才设置为1吧,但是如果还没有返回结果,可是已经发了多个请求出去了

追答

不需要返回 只要请求就设置1

本回答被提问者和网友采纳
参考技术D 加一个验证码,在服务器端判断验证码后就过期 第5个回答  2013-08-06 点击以后让界面处于等待状态.直到完成.不知你试过没有追问

你说的是遮罩吧,我也想过
由于我处理的线程太多,页面卡着不动,遮罩还没起作用的时候,会不会就已经发出了多个请求呢

Ajax 调用失败。使用 Jquery .ajax 函数发出简单的请求

【中文标题】Ajax 调用失败。使用 Jquery .ajax 函数发出简单的请求【英文标题】:Ajax call failing. Using Jquery .ajax function to make simple request 【发布时间】:2011-08-24 14:06:28 【问题描述】:

这里是调用ajax函数的jquery:

   function sendAjax(type, succ)  //where succ is the success callback

   if (type=="")
   
        $("#txtResp").empty();
        return;
   

   if(succ === undefined)    succ = null;  

   switch(type)
   
   case 'run':
       $.ajax(type:"GET",
               url: "start_mess.php",
               data: "q="+type,
               success: succ
       ); 
     break;
   


这里是index.html页面内容:

    function initialLoad() 
                   
    sendAjax('run')
    $("#txtResp").html(responseText);


initialLoad();

这是 PHP 页面:

echo $_GET['q'];
$q = $_GET['q'];

知道为什么这不起作用吗?谢谢!

泰勒

【问题讨论】:

好吧,一方面,sendAjax('run') 后面需要一个分号。我也看不到 responseText 的定义位置。 你知道 JS::onReady 技术吗? api.jquery.com/ready 【参考方案1】:

你没有传递回调,所以没有什么可以调用成功。

试试sendAjax('run', function(data) alert(data) );

【讨论】:

简单明了的描述。正是像我这样的初学者所需要的。非常感谢 @Taylor 不用担心,编码愉快 :) 抱歉我的回复,都是问题。我还没有评论权限:p。

以上是关于jquery ajax请求时如果页面卡主 多次发出相同请求 如何处理的主要内容,如果未能解决你的问题,请参考以下文章

ajax系列之用jQuery的ajax方法向服务器发出get和post请求

如果 Ajax 在预测时间后成功,则 jQuery 刷新/重新加载页面

在 DataTable Delete 操作中多次发送 Ajax 请求 - ASP.NET、JQuery、Ajax

使用 jQuery 发出同步请求时,如何防止浏览器锁定(或显示等待符号)?

jquery ajax多次请求接口解决方案

jquery - 使用 .done()、.then() 和 .when() 以给定顺序发出 ajax 请求