Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提交而不重定向_Javascript_Forms_Jquery Validate_Form Submit - Fatal编程技术网

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');
    }

  });  
});