Отправка двух почтовых запросов в один и тот же HTML [дубликат]

В принципе, дисперсия применяется, когда CLR может гарантировать, что ей не нужно делать какие-либо репрезентативные изменения к значениям. Все ссылки одинаковы, поэтому вы можете использовать IEnumerable как IEnumerable без каких-либо изменений в представлении; сам собственный код не обязательно должен знать, что вы делаете со значениями, если инфраструктура гарантировала, что он определенно будет действительным.

Для типов значений, которые не work - для обработки IEnumerable как IEnumerable, код, использующий последовательность, должен был бы знать, следует ли выполнять преобразование бокса или нет.

Возможно, вы захотите прочитать блог Эрика Липперта пост по представлению и идентичности для более подробной информации по этой теме в целом.

EDIT: перечитав сообщение блога Эрика, это как минимум примерно тождество как представление, хотя эти два связаны. В частности:

Вот почему ковариантные и контравариантные преобразования интерфейса и типов делегатов требуют, чтобы все переменные аргументы типа были ссылочными типами. Чтобы гарантировать, что вариантное преобразование ссылок всегда сохраняется с сохранением идентичности, все преобразования, связанные с аргументами типа, также должны сохраняться в идентичности. Самый простой способ гарантировать, что все нетривиальные преобразования в аргументах типа сохраняют сохранение идентичности, - это ограничение их ссылок на ссылки.

3
задан Community 23 May 2017 в 11:46
поделиться

3 ответа

Решение было довольно простым и включало добавление и установку async в false в .ajax (). Кроме того, я переработал код для работы кнопки отправки, а затем передал форму, когда AJAX успешно прошел.

Вот мой рабочий код:

$(document).ready(function() {
    var testing = false;
    $('#btn-login').on('click', function() {
        $.ajax({
            url: $('form').attr('action'),
            type: 'post',
            data: $('form').serialize(),
            async: false,
            success: function(data) {
                if (data == 'true')
                {
                    testing = true;
                    $('form').attr('action', 'https://example.com');
                    $('form').submit();
                }
                else
                {
                    alert('Your username/password are incorrect');
                }
            },
            error: function() {
                alert('There has been an error, please alert us immediately');
            }
        });

        return testing;
    });
});
11
ответ дан adamj 15 August 2018 в 20:23
поделиться
  • 1
    Что происходит, когда вы нажимаете ввод на любом входе? Он представит, что нарушает эту логику. – Ruben Arevalo 5 January 2017 в 17:26
  • 2
    @RubenArevalo Отключить клавишу ввода до тех пор, пока все поля не будут заполнены? Почему вы разрешаете кому-либо отправлять форму, если у нее нет всех необходимых данных? – adamj 6 January 2017 в 00:05
  • 3
    async:false в данном случае не имеет значения. – Kevin B 12 July 2018 в 15:23
  • 4
    @KevinB "Не имеет значения & quot; в каком смысле? – adamj 14 July 2018 в 00:41

В одной строке вы используете $('form'), чтобы выбрать форму для изменения своего действия, но затем вы используете $(this), чтобы попытаться выбрать ту же форму. Я бы предположил, что функция this внутри функции обратного вызова - это не то, что вы ожидаете от нее, и это нечто иное, чем ваша форма (возможно, объект window).

Просто соедините вызовы:

$('form').attr('action', 'http://example.com').unbind('submit').submit();
2
ответ дан Anthony Grist 15 August 2018 в 20:23
поделиться
  • 1
    $ (this) на самом деле предполагалось равным $ ('form'), это была ошибка, которую я исправил в коде, забыл отредактировать его в postoffflow post до того, как я опубликовал. Do'h. С уважением к цепочке, да, я знаю, что могу сделать все это за один раз, я просто предпочитаю делать это отдельно для лучшего обзора – adamj 7 May 2013 в 10:50
  • 2
    @adamj Честно говоря, код выглядит правильно для меня с этим изменением. Вероятно, вам придется отлаживать его, видеть, что возвращает запрос AJAX, видеть, какие части кода стреляют и т. Д. – Anthony Grist 7 May 2013 в 10:53
  • 3
    AJAX там никаких проблем. Когда он запускает .submit () в первый раз, он попадает в AJAX, он возвращает данные и добивается успеха. Он должен затем .unbind () форму из submit и повторно отправить форму, но повторная отправка никогда не возникает. По умолчанию вы сразу узнаете, работает ли он, отправив форму, которая приведет к example.com , но этого не произойдет. – adamj 7 May 2013 в 11:04

Неправильная практика выбора всех тегов формы в вашем коде, что, если на странице есть несколько форм? Также вам лучше использовать .on() и .off() с jQuery.

$(document).ready(function() {
    $('form').on('submit', function(e) {
        e.preventDefault();

        // cache the current form so you make sure to only have data from this one
        var form = this,
            $form = $(form);

        $.ajax({
            url: form.action,
            type: form.method,
            data: $form.serialize(),
            success: function(data) {
                if (data == 'true')
                {
                    $form.attr('action', 'http://example.com').off('submit').submit();
                }
                else
                {
                    alert('Your username/password are incorrect');
                }
            },
            error: function() {
                alert('There has been an error, please alert us immediately');
            }
        });
    });
});
6
ответ дан Simon 15 August 2018 в 20:23
поделиться
  • 1
    Я дам .on () выстрел, если это поможет. С уважением, не используя тег формы, вы правы, но в этом случае на странице всегда будет только одна форма. Если бы это был какой-то другой случай, я бы ударил атрибут ID в форме и нацелил его на это. – adamj 7 May 2013 в 11:08
  • 2
    Даже если вы добавите идентификатор, я все равно буду кэшировать объект, просто для обеспечения производительности и согласованности кода. – Simon 7 May 2013 в 12:25
Другие вопросы по тегам:

Похожие вопросы: