jQuery验证submitHandler在$中不起作用.Ajax post表单数据
jQuery validation submitHandler not work in $.ajax post form data
我使用$.ajax
发送数据,并使用jQuery验证插件进行验证,如下所示:
<div class="" id="ajax-form-msg1"></div>
<form id="myform" action="load.php">
<input type="input" name="name" id="name" value="" />
<input type="hidden" name="csrf_token" id="my_token" value="MkO89FgtRF^&5fg#547@d6fghBgf5" />
<button type="submit" name="submit" id="ajax-1">Send</button>
</form>
JS:
jQuery(document).ready(function ($) {
$('#myform').validate({
rules: {
name: {
required: true,
rangelength: [4, 20],
},
},
submitHandler: function (form) {
$("#ajax-1").click(function (e) {
e.preventDefault(); // avoid submitting the form here
$("#ajax-form-msg1").html("<img src='http://www.drogbaster.it/loading/loading25.gif'>");
var formData = $("#myform").serialize();
var URL = $("#myform").attr("action");
$.ajax({
url: URL,
type: "POST",
data: formData,
crossDomain: true,
async: false
}).done(function (data, textStatus, jqXHR) {
if (data == "yes") {
$("#ajax-form-msg1").html(' < div class = "alert alert-success" > ' + data + ' < /div>');
$("#form-content").modal('show');
$(".contact-form").slideUp();
} else {
$("#ajax-form-msg1").html('' + data + '');
}
}).fail(function (jqXHR, textStatus, errorThrown) {
$("#ajax-form-msg1").html(' < div class = "alert alert-danger" >AJAX Request Failed < br / > textStatus = ' + textStatus + ', errorThrown = ' + errorThrown + ' < /code></pre > ');
});
});
}
});
});
在行动我的表单验证使用jQuery验证,但验证后不提交和不发送数据。
如何解决这个问题?
DEMOsubmitHandler期待一个提交,你有一个点击事件在里面,然后一个ajax调用。
如果你在表单中有一个按钮type="submit",你甚至不需要点击事件,插件会自动进行验证。所以只需在submitHandler中进行ajax调用。
如果您需要使用click事件将动作绑定到按钮,正确的方法应该是这样的:
$('#button').click(function(){
var form = $('#myform').validate({...}); #store the validator obj
if (form.is_valid()){
// submit using ajax
} else {
// dont do anything
}
});
在完成函数的末尾调用form.submit()。
见:http://jqueryvalidation.org/validate/
另外,您不需要$("#ajax-1").click(),因为无论如何,当您单击该按钮时,submitHandler将自动调用。您可以通过将console.log作为submitHandler的第一行来测试这一点。然后填好表格,按下按钮。查看它是否打印出您的日志消息。
在submitHandler
中,您正在处理提交,那么为什么要写click event?
这里是修复。
jQuery(document).ready(function($) {
$('#myform').validate({
rules: {
name: {
required: true,
rangelength: [2, 20],
},
},
submitHandler: function(a, e) {
//a is form object and e is event
e.preventDefault(); // avoid submitting the form here
$("#ajax-form-msg1").html("<img src='http://www.drogbaster.it/loading/loading25.gif'>");
var formData = $("#myform").serialize();
var URL = $("#myform").attr("action");
$.ajax({
url: URL,
type: "POST",
data: formData,
crossDomain: true,
async: false,
success: function(data) {
console.log(data)
},
error: function(err) {
console.log(err)
}
}).done(function(data, textStatus, jqXHR) {
if (data == "yes") {
$("#ajax-form-msg1").html(' < div class = "alert alert-success" > ' + data + ' < /div>');
$("#form-content").modal('show');
$(".contact-form").slideUp();
} else {
$("#ajax-form-msg1").html('' + data + '');
}
}).fail(function(jqXHR, textStatus, errorThrown) {
$("#ajax-form-msg1").html(' < div class = "alert alert-danger" >AJAX Request Failed < br / > textStatus = ' + textStatus + ', errorThrown = ' + errorThrown + ' < /code></pre > ');
});
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/jquery.validation/1.14.0/jquery.validate.min.js"></script>
<form id="myform" action="load.php">
<input type="input" name="name" id="name" value="" />
<input type="hidden" name="csrf_token" id="my_token" value="MkO89FgtRF^&5fg#547@d6fghBgf5" />
<button type="submit" name="submit" id="ajax-1">Send</button>
</form>
使用success
和error
回调获取数据或错误消息。
注意:在这里(在StackOverflow)你会得到404 Page Not Found
错误,当你提交。所以尝试在本地。
相关文章:
- 如何使用自定义标头跨域执行AJAX POST
- 为什么 AJAX POST 请求不起作用
- Ajax POST请求没有'我不了解PHP
- 数据未从ajax POST返回
- AJAX Post的奇怪Javascript/PHP行为
- 使用javascript ajax post方法的未定义偏移PHP错误
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- Ajax Post请求不起作用
- 使用AJAX POST从javascript到带有Strong参数的Rails4控制器
- jQuery AJAX Post方法错误(语法错误)
- Jquery Ajax POST不工作.适用于GET
- 正在拆分AJAX POST变量
- 发送jquery-ajax$.post后重置连接
- ajax post在webapi中传递null参数
- 如何在javascript中使用ajax post更改密码
- 传递单元格值以便使用ajax post更新表
- 如何使用带有动态接受好友按钮的ajax post更新更多的表
- 如何将AJAX POST转换为HTTP POST,以便在单击时发布
- Ajax POST返回成功,但没有;t更新JSON文件
- 通过 ajax POST 向 PHP 发送两个值以查询 SQL 数据库