Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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即使返回false也会提交表单_Javascript_Ajax_Form Submit - Fatal编程技术网

javascript即使返回false也会提交表单

javascript即使返回false也会提交表单,javascript,ajax,form-submit,Javascript,Ajax,Form Submit,我有一个带有操作的表单,带有带有外部URL和方法post <form name="myform" id="myform" action="externalurl.com" mehtod="post"> </form> 此外,如果我返回一个No,它仍然会发布,如果我在上面的代码中设置一个断点并逐步执行,我可以看到该站点已经重定向到外部URL。(我希望这是有道理的) 如果有人有任何建议,我将不胜感激。您的$。ajax是异步的,因此成功处理程序返回的任何内容都将被忽略;到那时

我有一个带有操作的表单,带有带有外部URL和方法post

<form name="myform" id="myform" action="externalurl.com" mehtod="post">
</form>
此外,如果我返回一个No,它仍然会发布,如果我在上面的代码中设置一个断点并逐步执行,我可以看到该站点已经重定向到外部URL。(我希望这是有道理的)


如果有人有任何建议,我将不胜感激。

您的
$。ajax
是异步的,因此
成功
处理程序返回的任何内容都将被忽略;到那时,
submit
处理程序函数将完成(并将返回
undefined
,而不是
false

因为在响应返回之前,您不知道是否可以提交表单,因此无论如何,您都应该
返回false
,然后,如果响应正常,请手动提交表单,否则不要提交表单(只显示错误):


您可能还注意到,由于文档中的ID是(或应该是)唯一的,所以可以随意使用ID选择器(
“#myform”
),无需在其前面加上
表单

表单提交,因为HTML已经导致提交

你可以用它来防止这种情况

...
$('form#myform').submit(function (event) {
  event.preventDefault();
...

非常感谢你!它工作得完美无缺。今天我学到了一些新东西,今后我会记住这一点!谢谢,我会去掉前缀的。
[HttpPost]
    public JsonResult RegisterUser(string FirstName, string LastName)
    {
        if (FirstName == "" || LastName == "" )
        {
            return Json("RequiredFields", JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json("Yes", JsonRequestBehavior.AllowGet);
        }
        return Json("No", JsonRequestBehavior.AllowGet);
    }
$('#myform').submit(function() {
  var FirstName = $("#FirstName").val();
  var LastName = $("#LastName").val();
  $.ajax({
    type: "POST",
    url: "/umbraco/Surface/CheckoutMain/RegisterUser?FirstName=" + FirstName + "&LastName=" + LastName,
    dataType: "json",
    contentType: "application/json;charset=utf-8",
    success: (response) => {
      if (response == "Yes") {
        this.submit();
      } else if (response == "RequiredFields") {
        alert("Please make sure all required fields are filled in.")
      } else if (response == "No") {
        alert(response + "Please contact us!");
      }
    }
  });
  return false;
});
...
$('form#myform').submit(function (event) {
  event.preventDefault();
...