2013-09-06 1 views
0

Я использую $ .ajax внутри цикла for в jquery.прекратить выполнение другого до того, как он будет завершен в jquery

for(var i=0; i < 2; 1++) 
{ 

$.ajax({ 
url :"/models/getdata"+i 
dataType:"json" 
success:function(data) 
{ 
} 
}); 

} 

перед тем, как перейти к функции успеха для i = 0; i = 1 приходит и выполняет запрос ajax для этого значения. Я хочу, чтобы следующая итерация должна была дождаться завершения текущего.

Это означает, что один запрос ajax успешно завершен, а затем он увеличит значение i, а затем начнет следующую итерацию.

рассмотреть еще один сценарий также

function A() 
{ 
$.ajax code 

} 
/////another operation 

же здесь функция А() нужно ждать, пока его не Аякса после получать завершено. но в моем случае он переходит к следующему запуску кода, как можно остановить дальнейшее выполнение до завершения текущей функции. как концепция сна в C#

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

Спасибо,

Siva

ответ

0

установить async: false в вызове Ajax

+0

aync Атрибут aync используется, чтобы указать, будет ли полный пост или сообщение ajax не для этого. – SivaRajini

+0

нет, он не пойдет дальше, не выполнив сначала запрос ajax! поэтому async false – rps

3

Простое общее решение:

var i=0; 
(function doOne(){ 
    $.ajax({ 
     url :"/models/getdata"+i 
     dataType:"json" 
     success:function(data){ 
      if (++i<2) doOne(); 
     } 
    }); 
})(); 

Для вашего второго случая, вы можете использовать deferred возвращенный $ .ajax:

function A() { 
    return $.ajax(...) 
} 

A().done(function(){ 
    // some code executed after the ajax call finished 
}); 
-1

По умолчанию все запросы отправляются асинхронно, когда мы используем $.ajax. Асинхронно, я имею в виду, веб-приложения могут отправлять данные и извлекать данные с сервера (в фоновом режиме), не мешая отображению и поведению существующей страницы. Но вы хотите остановить выполнение, пока ваш запрос не будет завершен, поэтому установите async на «false».

Используйте это -

$.ajax({ 
    url :"/models/getdata"+i 
    dataType:"json", 
    async: false, 
    success:function(data) 
    { 
    } 
}); 
+0

Что такое использование async: false? – SivaRajini

+0

он уверен, что следующая строка не будет выполняться до тех пор, пока этот вызов ajax не будет завершен –

+0

ok. но я не хочу устанавливать это .. как я могу это решить? – SivaRajini

0

Этот метод может быть лучшим способом справиться с этой проблемой.

$.when(*AJAX CALL*) 
    .then(function() { // Function to run after ajax is completed 
}); 
Смежные вопросы