Это происходит потому, что ваша ssubmitWithAjax
функция * не * фактически * отправляет (запускает событие), она присоединяет обработчик отправки , когда происходит submit
(что делает нормальное поведение) ... так как вы вызываете его в ситуации отправки, просто удалите упаковщик обработчика и фактически отправьте, как показано ниже:
jQuery.fn.submitWithAjax = function() {
$.post(this.attr("action"), this.serialize(), null, "script");
$('.spinning').show();
$("#dialog_form").dialog("close")
return false;
};
Обратите внимание на изменение .attr("action")
, поскольку this
не являетсяОбъект jQuery, а не элемент <form>
DOM, поскольку он находится непосредственно в плагине.
Ранее вы каждый раз подключали дополнительный обработчик * submit
, поэтому выget 1, 2, 3 .... отправляет, просто вызвав нужный код отправки, этого не произойдет, поскольку внутри submitHandler
есть действительное место для продолжения и отправки в любом случае.
КакКроме того, функция обратного вызова для $.post()
является необязательной, поэтому вы можете оставить эту null,
, и она будет работать правильно.