使用Jquery验证时,表单尝试提交为get而不是post

时间:2015-08-03 17:59:19

标签: javascript jquery forms validation

我使用Jquery验证插件(http://jqueryvalidation.org/)来做一些简单的前端表单验证。至于我可以看到它的全部工作,但是现在我的表单似乎试图发送为get而不是post(所有数据保存到查询字符串并重新加载到页面上)。它真的很奇怪,我无法弄清楚我在这里做错了什么

HTML

 <form id ="form1">

    <p>What do you do for a living?</p>
    <select name="Job">         
    <option value="4">job4</option>
    <option value="3">job3</option>
    <option value="2">job2</option>
    <option value="1">job1</option>
    </select> 
    <input type="submit" value="Submit" id ="formButton">
 </form> 

的Javascript

var form = $("form");
form.validate();
$("#button").click(function () {
    var isValid = form.valid();
    if (isValid) {
        console.log("Valid: " + form.valid() + "form validation passed");
        var frm = $('#form1');
        frm.submit(function (ev) {
            $.ajax({
                type: "POST",
                url: "form_validation.php",
                data: frm.serialize(),
                success: function (data) {
                    if (data.error) {
                        alert(data.error);
                    } else {
                        alert(data.message + " " + data.sql);
                    }
                }

            });
        });
        ev.preventDefault();
    } else {
        console.log("form validation failed");
    }
});

2 个答案:

答案 0 :(得分:2)

检查您正在使用的jQuery版本。用于请求的默认methodtypeGET

在您的情况下,如果您使用的是> 1.9.0使用method属性的jQuery版本。

否则type属性应该按原样运行。

method: 'POST'

答案 1 :(得分:2)

我会稍微更改您的HTML表单

<form id ="form1" onsubmit="return validateForm()" method="post">

<p>What do you do for a living?</p>
<select name="Job">         
<option value="4">job4</option>
<option value="3">job3</option>
<option value="2">job2</option>
<option value="1">job1</option>
</select> 
<input type="submit" value="Submit">

当我这样做时,这是有效的。