2013-09-12 5 views
1

я есть кнопка на моей страницеJquery Multiple Ajax запрос на кнопку Нажмите

<input type="button" onclick="someFunction()" value="submit"/> 

теперь, когда пользователь нажимает на кнопку функцию JS SomeFunction() выполнить х. В этой функции отправляется запрос на сервер через метод jquery $ .ajax ...

Мне нужно знать, что произойдет, если пользователь повторно нажмет кнопку.

делает JQuery сохранить Que для запроса или прервать-й предыдущий запрос и начать новую ..

если JQuery поддерживать Que то, как можно остановить/прервать их всех.

Любая помощь будет очень полезна.

+0

1'st ответ: каждый щелчок будет работать новый запрос Ajax. И - для второго вопроса можно дублировать [Остановить все активные запросы ajax в jQuery] (http://stackoverflow.com/questions/1802936/stop-all-active-ajax-requests-in-jquery) –

+0

После нажатия кнопки , вы можете скрыть или отключить кнопку до получения результата. Таким образом, непрерывный вызов не будет выполнен. –

+0

@ Royi Namir хорошо, это не совсем дубликат. –

ответ

2

Да, $ajax делает новый запрос на каждый щелчок (событие огня),

не любой запрос будет купирован/прерванный.

Предложение: отключить 1-й щелчок и включить его после ответа.

0

Вы можете сохранить запрос Ajax в переменной:

var request = $.ajax({ 
    type: 'POST', 
    url: 'someurl', 
    success: function(result){} 
}); 

Затем вы можете прервать запрос:

request.abort(); 

Если кнопка нажата, вы только должны проверить, если request установлен чтобы убедиться, что только один вызов ajax выполняется сразу.

+0

Мне нужно знать поведение метода jquery ajax. –

0
function someFunction() { 
    if (this.ajaxPending) return; 
    this.ajaxPending = true; 
    $.ajax(...).always(function() { 
     this.ajaxPending = false; 
    }); 
} 
0

Ваш код должен выглядеть так:

$(document).ready(function(){ 
    js_Codes(); 

    /* The rest of your code that will not reload after ajax request */ 

}); 

$(document).ajaxComplete(function(){ 
    /* Here we call the codes that will reload after your ajax request */ 
    js_Codes(); 
}); 

function js_Codes(){ 

    function clickOpenDialog(){ 
     $('.btOpenDialog').off('click',clickOpenDialog); 
     fn_open_Dialog_Click($(this).prop('alt'), function(){$('.btOpenDialog').on('click',clickOpenDialog);}); 
     return false; 
    }; 

    function fn_Open_Dialog_Click(myString){ 
     var myArray = myString.split(';'); 
     /* whatever u want with your page with a string param array */ 

    }; 

    $('.btOpenDialog').on('click',clickOpenDialog); 
} 

;)

+0

Объяснение, почему это решение поможет улучшить качество вашего ответа. – colonelclick

Смежные вопросы