简体   繁体   English

jQuery无法重新识别表单和页面刷新

[英]jQuery not recoqnizing form and page refreshes

I have a form that needs to be submitted and the data sent to mysql with Ajax and jQuery, however when clicking submit, the page refreshes and the jQuery code is not running. 我有一个需要提交的表单,并且使用Ajax和jQuery将数据发送到mysql,但是单击“提交”时,页面将刷新,并且jQuery代码未运行。

Here is my HTML code: 这是我的HTML代码:

<form class="form-horizontal" role="form" action="" method="post">
        <input type="text" id="firstname" class="form-control" placeholder="Firstname" required=""></br>
        <input type="text" id="lastname" class="form-control" placeholder="Lastname" required=""></br>
        <input type="text" id="signup_email" class="form-control" placeholder="Email address" required=""></br>
        <select id="gender" class="form-control">
            <option>Select Gender</option>
            <option value="male">Male</option>
            <option value="female">Female</option>
        </select></br>
        <input type="password" id="signup_password" class="form-control" placeholder="Password" required="">
        <input type="submit" id="signup_button" name="signup_button" class="btn btn-primary" value="Sign up">
    </form>

And here is my jQuery: 这是我的jQuery:

<script type="text/javascript">
    $(function()){
        $("#signup_button").click(function() {
            var firstname = $("input#firstname").val();
            var lastname = $("input#lastname").val();
            var email = $("input#signup_email").val();
            var gender = $("select#gender").val();
            var password = $("input#signup_password").val();

            var datastring = 'new=yes'+'&firstname='+firstname+'&lastname='+lastname'&email='+email+'&gender='+gender+'&password='+password;

            $.ajax({
                type:"POST";
                url:"api/signup.php";
                data: datastring;
                cache: true;
                success: function(html) {
                    $.("#alert_succes_congrats").css('display', '');
                }
            }) 
            return false;
        })
    }
</script>

Thank you. 谢谢。

You have two options to solve your problem: 您有两种选择来解决您的问题:

1st option: 第一种选择:

Change 更改

<input type="submit" id="signup_button" name="signup_button" class="btn btn-primary" value="Sign up">

To

<input type="button" id="signup_button" name="signup_button" class="btn btn-primary" value="Sign up">

So the button will not trigger a form submit. 因此,该按钮将不会触发表单提交。

2nd option: 第二个选择:

Put an event.preventDefault at your click handler. 在您的点击处理程序中放置一个event.preventDefault。

$("#signup_button").click(function(event) {
    /* Your stuff */
    event.preventDefault();
}

So it will not trigger browser default action to form submit button. 因此,它不会触发浏览器对表单提交按钮的默认操作。

You code has lot of syntax error: 您的代码有很多语法错误:

$(function()){

Should be 应该

$(function(){

Plus the ajax members should be separated by comma and not semi-colon, there was issue in string concatenation as well. 再加上ajax成员应该用逗号而不是分号分隔,字符串连接也存在问题。 Next time this happens, please check the browser console for any javascript issues. 下次发生这种情况时,请检查浏览器控制台是否存在任何JavaScript问题。

This should work 这应该工作

<script type="text/javascript">
$(function(){
    $("#signup_button").click(function() {
        var firstname = $("input#firstname").val();
        var lastname = $("input#lastname").val();
        var email = $("input#signup_email").val();
        var gender = $("select#gender").val();
        var password = $("input#signup_password").val();

        var datastring = 'new=yes'+'&firstname='+firstname+'&lastname='+lastname+'&email='+email+'&gender='+gender+'&password='+password;

        $.ajax({
            type:"POST",
            url:"api/signup.php",
            data: datastring,
            cache: true,
            success: function(html) {
                $("#alert_succes_congrats").css('display', '');
            }
        }); 
    return false;
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM