【发布时间】:2016-07-13 06:08:46
【问题描述】:
我有一个由 JQuery 提交的表单。有时当表单提交失败时,表单内的值会自动作为查询字符串附加到 url。我进行了很多搜索,但无法找到有关这种奇怪行为的任何信息。这是发生的事情的一个例子。
有一个包含两个字段的表单
$("#MyForm").validate({
rules: {
"UserName": {
required: true
},
"Password": {
required: true,
minlength: 8
}
},
messages: {
"UserName": {
required: "UserName is required"
},
"Password": {
required: "Password is required"
}
},
submitHandler: function () {
var userName = $("#UserName").val();
var password = $("#Password").val();
var myObject = {UserName:userName, Password: password}
$.post('/MyAuthenticationUrl',myObject,function(){
//Redirect to Home page on success
});
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm" action="/MyUrl"/>
<input type="text" id="UserName" />
<input type="password" id="Password"/>
<input type="submit" id="Submit"/>
<form>
对于表单验证和提交,我使用来自JqueryValidation.org 的 JqueryValidation 插件
有时当我点击提交时,用户名和密码会附加到查询字符串中。
所以如果你有一个像http://localhost/Home/Index 这样的网址,它就会变成 http://localhost/Home/Index/?UserName=blah&Password=blah
我怀疑它与 JqueryValidation 插件有关,但我无法在问题页面 here 中找到任何相关内容
【问题讨论】:
-
尝试将
method="post"添加到您的表单标签中。 -
你应该在控制台失败时检查它,我想你应该在那里得到错误消息
-
@GentlemanMax 但是如果我是正确的,插件会阻止表单提交的默认行为,使用 ajax 方法
-
@A.Wolff,是的。但是当插件失败时,表单会正常提交。插件失败的原因可能是一个单独的问题。
-
@GentlemanMax 如果插件失败意味着 OP 的代码中有任何错误,那么是的。我认为 OP 应该问一下他的插件为什么会失败
标签: jquery asp.net asp.net-mvc jquery-validate