Форма AJAX подает сама? - PullRequest
       2

Форма AJAX подает сама?

0 голосов
/ 13 февраля 2012

Я не знаю, что здесь происходит сегодня вечером, но я не могу заставить работать AJAX. Когда форма отправлена, она обновляет страницу со значениями в URL. Я использую плагин проверки, который имеет обработчик отправки, но он все еще обновляется. Я использовал этот метод раньше и у меня не было проблем. Посмотрите на страницу здесь и дайте мне знать, что вы думаете:

http://www.jacobsmits.com/demos/jquery_ajax.html?firstName=&lastName=&email=&message=&contactSubmit=

<div class="demo_content" style="display:none">
    <form id="contact_form">
        <span class="inputSpan">
            <input value="" class="input input1" title="First name" id="firstName" name="firstName" type="text" />
        </span>
        <span class="inputSpan">
            <input value="" class="input input2" title="Last name" id="lastName" name="lastName" type="text" />
        </span>
        <span class="inputSpan">
            <input value="" class="input input2" title="Email" id="email" name="email" type="text" />
        </span>
        <span class="inputSpan">
            <textarea type="text" id="message" name="message" title="Message" class="input textArea" ></textarea>
        </span>

        <span class="inputSpan">
            <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
        </span>
        <div id="contact_ajax_wrap">
            <div id="contact_ajax_gif" style="display:none;"><img src="http://www.jacobsmits.com/images/main/ajax-loader-black.gif" width="32" height="32" /></div>
            <div id="contact_ajax_success" style="display:none">Thanks! I'll get back to you shortly.</div>
        </div>
    </form>

<script type="text/javascript">
    //This script will handle the email form
    $(window).load(function() {
        $('#contact_form').placeholderRX({textColor: '#999', hoverColor: '#FBFBFB', addClass: 'yourFormInputText'});
    });
    $(".button").click(function() {
        var dataString = "fname=" + $("#firstName").val();
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "http://www.jacobsmits.com/demos/scripts/contact_form.php",
            data: dataString,
            success: function(result) {
                if(result == "Success"){
                    alert("Success");
                }else{
                    alert("Fail");
                }
            }
        });
    });
</script>

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Необходимо отменить стандартное поведение кнопки отправки (отправить форму не ajax).
Это можно сделать с помощью preverntDefault() для объекта события или с помощью return false;

   $(".button").click(function(e) {
        var dataString = "fname=" + $("#firstName").val();
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "http://www.jacobsmits.com/demos/scripts/contact_form.php",
            data: dataString,
            success: function(result) {
                if(result == "Success"){
                    alert("Success");
                }else{
                    alert("Fail");
                }
            }
        });
        return false; /// <=== that was missing.
        e.preventDefault(); /// Or this.
    });

Существует событие отправки, поэтому лучше прослушать это событие вместо нажатия кнопки:

   $("#contact_form").submit(function(e) {
        var dataString = "fname=" + $("#firstName").val();
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "http://www.jacobsmits.com/demos/scripts/contact_form.php",
            data: dataString,
            success: function(result) {
                if(result == "Success"){
                    alert("Success");
                }else{
                    alert("Fail");
                }
            }
        });
        return false; /// <=== that was missing.
        e.preventDefault();  /// Or this.
    });
1 голос
/ 13 февраля 2012

вам нужно отменить поведение по умолчанию кнопки submit

$(".button").click(function(e) {
            e.preventDefault();
            //rest of your code here
            var dataString = "fname=" + $("#firstName").val();
            alert(dataString);
            $.ajax({
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...