Javascript 禁用所有单击事件,直到ajax请求完成

Javascript 禁用所有单击事件,直到ajax请求完成,javascript,jquery,ajax,event-handling,Javascript,Jquery,Ajax,Event Handling,我有一个类似这样的列表页面: //start loop <div id ='row-prd-<number>'> <strong>product Name</strong> <a href='#' id='edit-prd-<number>'>Edit</a> <a href='#' id='delete-prd-<number>'>Delete</a> </

我有一个类似这样的列表页面:

//start loop
<div id ='row-prd-<number>'>
  <strong>product Name</strong>
  <a href='#' id='edit-prd-<number>'>Edit</a>
  <a href='#' id='delete-prd-<number>'>Delete</a>
</div>
//end loop
$.ajax({
        url: 'your url',
        global: false,
        type: 'POST',
        data: {},
        async: false,
        success: function() {},
        error: function() {}
    });
在我的javascript中,我执行以下操作:

$('#delete-prd-<number>').click()
{
   //change style of the row to show its being deleted..
   $('row-prd-<number>').addClass('deleting');

   //make ajax call to delete
   ajaxDeleteRecord(prd-<number>);
}
现在,这个很好用。我担心的是,在连接速度较低的情况下,deleteAJAX调用需要几秒钟才能完成。我担心如果用户点击另一条记录的编辑或删除按钮会发生什么。所以我有三个问题:

一,。在ajax调用返回之前,是否应该禁用页面上的所有单击事件? 对我来说,这似乎不是一个好的选择——假设ajax调用出错了……在这种情况下,用户现在处于一种无法再单击页面中任何内容的状态

二,。那我该怎么处理呢? ……我有点不知所措,不知该怎么办。我想这是我的三个问题中最重要的一个

一,。如果我必须禁用并重新启用编辑/删除/新建页面上元素的单击,有没有简单的方法?
…只是好奇…

为了禁用所有其他事件,场景1将执行此操作。它也会有点整洁

通过设置

async:false
在电话里

语法如下所示:

//start loop
<div id ='row-prd-<number>'>
  <strong>product Name</strong>
  <a href='#' id='edit-prd-<number>'>Edit</a>
  <a href='#' id='delete-prd-<number>'>Delete</a>
</div>
//end loop
$.ajax({
        url: 'your url',
        global: false,
        type: 'POST',
        data: {},
        async: false,
        success: function() {},
        error: function() {}
    });

让AJAX调用同步怎么样?在AJAX调用返回之前,它将阻止所有其他操作。嗯……这是一个非常好的建议。我想无论如何我都必须处理Ajax响应中断…考虑处理错误条件,而不是使浏览器无响应,使您的请求同步。在$中查找错误回调选项。ajax@techfoobar-我会的,谢谢!非常感谢。如果ajax响应没有返回,您将如何处理这种情况?我不希望用户在没有能力做任何事情的情况下陷入困境……这可以在同一ajax请求的错误块中处理。ajax请求必须作为错误或成功返回。如果必须使其同步,ajax的好处是什么???@Anant ajax调用是获取数据或推送数据,但有时需要等待响应,禁用按钮/或上传文件并给出需要同步的上传进度。使用ajax不仅仅是异步使用…这对于某些用例来说是正确的,他们已经给出了参数async:false…@v31,但是可能有更好的解决方案来禁用所有点击,而不是使ajax同步。若服务器并没有响应怎么办?那只会冻结页面。在这种情况下,用户将不知道发生了什么。可能同步状态在其他场景中是完美的,但在当前场景中不是