У меня есть проблема в ajax-функции, где beforeSend второго сообщения ajax выполняется перед полной: функцией первого ajax. Класс загрузки, который я добавляю в placehorder перед отправкой, работает для первого вызова ajax. Однако вскоре после завершения первого запроса ajax класс будет удален и никогда не будет добавлен снова на второй и дальнейшие вызовы (помните рекурсивные вызовы). Во время отладки это показывает, что функция beforeSend вторых вызовов ajax вызывается сначала, а полная функция первого вызова ajax вызывается позже. Это очевидно, потому что возвращаемые данные, вставленные на страницу с первого вызова ajax, запускают второй вызов.
Короче это перепутало. Можно ли это изменить?
Код функции выглядит следующим образом
function AjaxSendForm(url, placeholder, form, append) {
var data = $(form).serialize();
append = (append === undefined ? false : true); // whatever, it will evaluate to true or false only
$.ajax({
type: 'POST',
url: url,
data: data,
beforeSend: function() {
// setting a timeout
$(placeholder).addClass('loading');
},
success: function(data) {
if (append) {
$(placeholder).append(data);
} else {
$(placeholder).html(data);
}
},
error: function(xhr) { // if error occured
alert("Error occured.please try again");
$(placeholder).append(xhr.statusText + xhr.responseText);
$(placeholder).removeClass('loading');
},
complete: function() {
$(placeholder).removeClass('loading');
},
dataType: 'html'
});
}
И данные содержат следующий фрагмент javascript/jquery, который проверяет и запускает другой запрос ajax.
<script type="text/javascript">//<!--
$(document).ready(function() {
$('#restart').val(-1)
$('#ajaxSubmit').click();
});
//--></script>