Jquery: как отправить один ajax-запрос и сохранить строку JSON для других вызовов - PullRequest
1 голос
/ 27 июня 2011

в моем коде у меня есть

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

Моя проблема в том, что функция send_ajax вызывается в моем скрипте несколько раз, и иногда много вызовов ajax отправляются вместе, и в этом нет необходимости. поэтому я ищу решение, в котором при отправке одного ajax-запроса другие вызовы должны подождать, пока эта функция сохранит данные в ответном var и использует их.

как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 27 июня 2011

Если вы установите флаг асинхронизации в false, другие вызовы не будут выполняться, пока не будет сделан первый вызов.

$.ajax({
     url: url
     type: 'POST',
     dataType: "JSON",
     async: false,
     success: function(data){
        response = data;
     }
   });
0 голосов
/ 27 июня 2011

Другое решение, если вы хотите, чтобы $ .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;
             }
           });
     }
 }
0 голосов
/ 27 июня 2011
if(response == ""){
 response = 'waiting';

добьется цели, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...