конвертировать jquery.submit в ajax представить - PullRequest
2 голосов
/ 18 декабря 2010

Я не могу понять, как отправить форму из функции кнопки jquery ui, используя Ajax.

Вот мой скрипт, который отправляет форму обычным способом

        $('#contact-form').dialog({
            modal: true,
            autoOpen: false,
            buttons: {
                Cancel: function () {
                    $(this).dialog('close');
                },
                Ok: function () {
                    $('form#contactUs').submit();
                    $(this).dialog('destroy');
                }
            }
        });

        $('#contact-us').click(function () {
            $('#contact-form').dialog('open');
            return false;
        });
    });

и вот моя форма

<div id="contact-form" class="hidden" title="Online Request Form">
    <form action="/Main/Contact/contactUs" method="post">            
        <div>
            <label for="Name">Name</label><br />
            <input name="Name" /><br />
            <label for="PhoneNumber">Phone Number</label><br />
            <input name="PhoneNumber" /><br />
            <label for="EmailAddress">Email Address</label><br />
            <input name="EmailAddress" /><br />
            <label for="Question">Question or Comment</label><br />
            <textarea name="Question"></textarea><br />
            <label for="Security">What color is an orange?</label><br />
            <input name="Security" />
            <noscript>
                <input type="submit" name="submit" value="Ok" />
            </noscript>
        </div>
    </form>    
</div>

Как я могу изменить это, чтобы отправить ссылку через Ajax, чтобы я мог отобразить сообщение об успехе?

Ответы [ 2 ]

8 голосов
/ 18 декабря 2010

Этого, вероятно, достаточно:

$("#contact-form form").submit(function(e) {
    e.preventDefault();
    $.post( $(this).attr('action'), $(this).serialize(), 
                function(resp) {
                    if(resp == "success") {
                        alert('Submission was successful');
                    } else {
                        // something else
                    }
                }
    });              
});

Краткое объяснение:

  • Свяжите обработчик события onsubmit с контактной формой. Запретить «нормальную» отправку.
  • Сериализуйте форму и отправьте результат в действие формы.
  • Оцените ответ и каким-то образом отобразите сообщение.

Дальнейшее чтение:

0 голосов
/ 18 декабря 2010

Вот решение, которое я нашел

<div id="contact-form" class="hidden" title="Online Request Form">
    @Using (Ajax.BeginForm("Contact", "Main",
                          Nothing,
                          New AjaxOptions With {.UpdateTargetId = "", .HttpMethod = "post"},
                          New With {.id = "contactUs"}))
        @<div>
            <label for="Name">Name</label><br />
            <input name="Name" /><br />
            <label for="Phone">Phone Number</label><br />
            <input name="Phone" /><br />
            <label for="Email">Email Address</label><br />
            <input name="Email" /><br />
            <label for="Question">Question or Comment</label><br />
            <textarea name="Question"></textarea><br />
            <label for="Security">What color is an orange?</label><br />
            <input name="Security" />
            <noscript>
                <input type="submit" name="submit" value="Ok" />
            </noscript>
        </div>
    End Using
</div>
<script>
    $(function () {
        $('#contact-form').dialog({
            modal: true,
            autoOpen: false,
            buttons: {
                Cancel: function () {
                    $(this).dialog('close');
                },
                Ok: function () {
                    $('form#contactUs').trigger('submit');
                    $(this).submit();
                }
            }
        });

        $('#contact-us').click(function () {
            $('#contact-form').dialog('open');
            return false;
        });
    });

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...