Javascript 提交而不重定向
我想提交表单,但不重定向/刷新页面,而是使用Javascript 提交而不重定向,javascript,forms,jquery-validate,form-submit,Javascript,Forms,Jquery Validate,Form Submit,我想提交表单,但不重定向/刷新页面,而是使用jquery.validate。 我试着做一些类似的事情 $("#myForm").validate({ errorLabelContainer: "#errorContainer", wrapper: "div", submitHandler: function (form) { form.submit(function () { return false; });
jquery.validate
。
我试着做一些类似的事情
$("#myForm").validate({
errorLabelContainer: "#errorContainer",
wrapper: "div",
submitHandler: function (form) {
form.submit(function () {
return false;
});
$('#form-container').fadeOut(function () {
$('#afterSubmit').fadeIn()
});
return false;
}
});
我尝试更改表单。提交到
form.ajaxSubmit(function () { return false; });
或
还有许多其他的变化
当我只执行以下代码时,表单不会提交
submitHandler: function (form) {
return false;
}
在验证并没有被重定向之后,我应该如何提交表单?以下是我用来进行ajax调用的方法:
var sendData = "action=do_action";
sendData += "&value=" + $("input.value").val();
$.ajax({
url: "post.php",//Page to send our data to
global: false,
type: "POST",
data: sendData,
dataType: "html",
async:false,
success: function(data){
//We could return JSON and then just parse that, but I usually just return values like this
//create jquery object from the response html
var $response=$(data);
var results = $response.filter('div.results').text();//Or .html() if we want to return HTML to show
if (results == "true") {
alert("it works");
}else{
var reason= $response.filter('div.reason').text();
alert(reason);
}
}
});
PHP看起来像:
<?php
$action = $_POST['action'];
if ($action == "do_action") {
if (true) {
echo "<div class='result'>true</div>";
}else{
echo "<div class='result'>false</div>";
echo "<div class='reason'>Houston, we have a problem!</div>";
}
}
?>
如果您需要在不重新加载页面的情况下提交表单,则必须使用ajax提交。是的,为此您需要将form.submit更改为form.ajaxSubmit。但除了验证插件之外,还需要包含jQuery表单插件。您可以在这里找到关于jQuery表单插件的ajaxSubmit函数的更多详细信息 你应该这样做。请在此处找到工作示例
并确保添加,如我的JSFIDLE示例中所示
$(function(){
$("#myForm").validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
clearForm: true,//To clear form after ajax submitting
success: function(){alert('done');}
});
return false;
},
invalidHandler: function(form) {
alert('error');
}
});
});
为什么有人投了反对票?这很有效。我已经根据需要在多个网站上使用了它的变体…我正在用这个表单发送文件,但它没有使用jquery.validate插件。如果脚本中有任何错误,页面将遵守表单的操作声明。使用浏览器调试器单步执行代码以查找可能的错误原因。实际上,调试器并没有在我的断点中停止。我真的不知道为什么。检查控制台日志,因为您的页面上可能有其他错误阻止脚本运行。控制台中没有错误。只需添加此插件,无需更改。更新问题。
$(function(){
$("#myForm").validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
clearForm: true,//To clear form after ajax submitting
success: function(){alert('done');}
});
return false;
},
invalidHandler: function(form) {
alert('error');
}
});
});