Многократная подача формы не работает - PullRequest
0 голосов
/ 25 января 2012

Может кто-нибудь помочь мне, пожалуйста. У меня были ответы на аналогичный вопрос, но я не могу решить свою проблему, поэтому я постарался быть максимально подробным здесь. Извините, если это повторяется, но мне действительно нужна помощь в этом.

Я пытаюсь отправить три формы на одну и ту же страницу asp с помощью события наведения мыши. Страница asp выполняет код для сохранения изображения в соответствии с тем, какая форма была отправлена ​​и какие данные она содержит. Я пробовал несколько способов сделать это. Отправка по очереди, как показано ниже, приводит к созданию некоторых или всех изображений, но это происходит случайным образом, и кажется, что последующие представления перезаписывают предыдущие вызовы.

function save_all_des(){
    document.getElementById("form_zoom1").submit();
    document.getElementById("form_zoom2").submit();
    document.getElementById("form_zoom3").submit();
}

Я также пытался использовать jquery следующим образом:

$("#create_image").mouseover(function() {
    $("#form_zoom1").submit(function() {
    $("#form_zoom2").submit(function() {
    $("#form_zoom3").submit();
    });
    });
});

Это не работает вообще, даже если я пробую только одну форму. (Само событие при наведении курсора срабатывает нормально.)

Три формы имеют одинаковые входные имена (я показал только одно), но с разными значениями. Индивидуально они подают нормально.

<form id="form_zoom1" name="form_zoom1"  action="abc.asp" target="MyFrame">
    <input type="hidden" name="tab" value="1">
</form>
<form id="form_zoom2" name="form_zoom2"  action="abc.asp" target="MyFrame2">
    <input type="hidden" name="tab" value="2">
</form>
<form id="form_zoom3" name="form_zoom3"  action="abc.asp" target="MyFrame3">
    <input type="hidden" name="tab" value="3">
</form>

<iframe id="MyFrame" name="MyFrame" style="display:none;"></iframe>
<iframe id="MyFrame2" name="MyFrame2" style="display:none;"></iframe>
<iframe id="MyFrame3" name="MyFrame3" style="display:none;"></iframe>

Как сделать так, чтобы код, представленный в одной форме, заканчивался до отправки второй, а затем третьей?

Любая помощь приветствуется. Спасибо

1 Ответ

2 голосов
/ 25 января 2012

Похоже, вам лучше использовать AJAX для отправки POST-запросов на сервер, а не отправлять форму. Возможно, вы могли бы отправить все три запроса одновременно и заставить его работать правильно, но это зависит от того, что именно вы делаете с ответом от сервера после отправки.

Посмотрите документацию jQuery для получения дополнительной информации об использовании ее для выполнения вызовов AJAX.

Пример кода может выглядеть примерно так:

function submitForm(form) {
    $.ajax({
        url: 'abc.asp',
        method: 'post',
        data: {
            tab : $('input[name="tab"]',form).val()
        },
        success: function(data) {
            /* handle the response from the server here
            if you don't need to do anything to the structure of the page, you can probably just leave this blank
            may want to put in some console.log or alert statements for debugging purposes
            */
        }
    });
}

$('#create_image').mouseover(function() {
    submitForm($('#form_zoom1'));
    submitForm($('#form_zoom2'));
    submitForm($('#form_zoom3'));
});

Обратите внимание, что он отправляет три запроса AJAX POST, по одному для каждой формы, примерно в одно и то же время. Нет гарантии, что они выполнят заказ в этом порядке (хотя это не кажется важным, учитывая предоставленную вами информацию).

...