пост Ajax срабатывает дважды - PullRequest
0 голосов
/ 04 января 2012

В приложении asp.net mvc3 есть форма.Форма размещена через пост jquery.Ниже приведен соответствующий код.

                $(this).find('form').live('submit', function () {
                    var request = $.post($(this).attr('action'), $(this).serialize(), function (data) {
                       //do something    
                    });
                    request.fail(function (jqXHR, textStatus) {
                       //do something    
                    });
                    return false;
                });

live () используется, потому что форма загружается через ajax, и я не хотел связывать событие щелчка при каждом получении формы через ajax.

Проблема заключается в том, что нажмите кнопку «Отправить причины», чтобы опубликовать ее дважды.Протестировано в Chrome и IE9, встречается в них обоих.

  • Я проверил, содержит ли страница какие-либо другие формы, но есть только 1 форма.

  • Я отключил все расширения в обоих браузерах (возможно, firebugвызвать это)

  • На странице нет ресурсов, вызывающих 404 (т. е. изображения).

Так что еще может вызвать эту проблему?

Ответы [ 3 ]

1 голос
/ 05 января 2012

Я подозреваю, что вы загружаете форму или кнопку отправки дважды. Существует букмарклет , называемый Visual Event (не мой). Запустите проверку, если это так. Как сказал Каз без фактического HTML, мало что можно сделать

0 голосов
/ 12 декабря 2012

Это то, что сделал для меня. У меня была форма Ajax, и единственное, что я получил на работу, было:

$('#docForm').ajaxForm({

  ...Do Some Mildly Cool Stuff Code...

}).submit(function (e) {
  return false;
}); //Just add the submit to the end.

И это было все, что потребовалось.

Надеюсь, это поможет!

0 голосов
/ 04 января 2012

Трудно сказать без HTML-разметки, может быть, у вас есть две вложенные формы?

Попробуйте с помощью event.stopPropagation или protectDefault:

$(this).find('form').live('submit', function (e) {
        e.stopPropagation();
        e.preventDefault();
        var request = $.post($(this).attr('action'), $(this).serialize(), function (data) {
                    });
        request.fail(function (jqXHR, textStatus) {
                       //do something    
        });
        return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...