Jquery:如何发送一个ajax请求并为另一个调用保存JSON字符串

Jquery: how to send one ajax request and save the JSON string for another calls

本文关键字:请求 另一个 调用 字符串 JSON 保存 ajax 一个 何发送 Jquery      更新时间:2023-09-26

在我的代码中,我有以下

var response = "";
function send_ajax(){
 if(response == ""){
   $.ajax({
     url: url
     type: 'POST',
     dataType: "JSON",
     success: function(data){
        response = data;
     }
   });
 }
}

我的问题是,在我的脚本中sendajx函数被调用了好几次,有时很多ajax调用都是一起发送的,而不需要这样做。因此,我正在寻找一种解决方案,如果一个ajax请求被发送,其他调用应该等待,直到该函数将数据保存在响应var中并使用它

我该怎么做?

如果将async标志设置为false,则在第一次调用完成之前不会进行其他调用。

$.ajax({
     url: url
     type: 'POST',
     dataType: "JSON",
     async: false,
     success: function(data){
        response = data;
     }
   });
if(response == ""){
 response = 'waiting';

不会吧?

如果您希望$.ajax是异步的,但任何时候只允许一个ajax请求,则另一种解决方案。您可以查看$.ajaxStart和$.ajaxStop全局事件

var ajaxLock = false;
$.ajaxStart(function(){ajaxLock = true;});
$.ajaxStop(function(){ajaxLock = false;});
var ajaxRequest = function(url, data) {
     if (!ajaxLock) {
        $.ajax({
             url: url
             type: 'POST',
             dataType: "JSON",
             async: false,
             success: function(data){
                response = data;
             }
           });
     }
 }