AJAX表单正在提交吗? [英] AJAX Form is submitting to itself?

查看:57
本文介绍了AJAX表单正在提交吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道今晚这里发生了什么,但是我似乎无法使AJAX正常工作.提交表单后,它将使用URL中的值刷新页面.我正在使用具有提交处理程序的validate插件,但仍会刷新.我以前使用过这种方法,没有任何问题.看看这里的页面,让我知道您的想法:

I don't know what is going on here tonight, but I can't seem to get AJAX working. When the form is submitted, it refreshes the page with the values in the URL. I'm using a validate plugin that has a submit handler, but it still refreshes. I've used this method before and have had no problems. Take a look at the page here and let me know what you think:

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>

推荐答案

您需要取消提交"按钮的默认行为(提交表单而不是ajax).
可以使用事件对象上的preverntDefault()return false;

You need to cancel the default behaviour of the submit button(submit the form not ajax).
It can be done with preverntDefault() on the event object or with 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.
    });

有一个提交事件,所以最好听这个事件而不是单击按钮:

There is a submit event, so better listen to this event instead of the click button:

   $("#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.
    });

这篇关于AJAX表单正在提交吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆