Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Jquery 为什么我的表单在Ajax调用后被提交?_Jquery_Ajax - Fatal编程技术网

Jquery 为什么我的表单在Ajax调用后被提交?

Jquery 为什么我的表单在Ajax调用后被提交?,jquery,ajax,Jquery,Ajax,我有以下资料: <form id="form" action="xxx" method="get"> <input type="checkbox" name="cb"> <button onclick="update();">Update</button> </form> <script> function update() { var data = $("#form").serialize();

我有以下资料:

<form id="form" action="xxx" method="get">
  <input type="checkbox" name="cb">
  <button onclick="update();">Update</button>
</form>

<script>
  function update() {
    var data = $("#form").serialize();
    $.ajax( {
      url: "/api/m/x",
      type: "post",
      data: data
      }
     ).done(function(results,status) {
          alert(status);
       }).fail(function(error, status) {
          alert(status);
      });
   }
</script>

更新
函数更新(){
var data=$(“#form”).serialize();
$.ajax({
url:“/api/m/x”,
类型:“post”,
数据:数据
}
).完成(功能(结果、状态){
警报(状态);
}).失败(功能(错误、状态){
警报(状态);
});
}
当我单击Update按钮时,Ajax调用被调用到
/api/m/x
,其中一个警报被触发。到现在为止,一直都还不错。但是,在我关闭警报对话框后,表单已提交!浏览器被发送到
xxx?cb=on
,例如,如果我勾选了复选框

为什么会这样?我的表单没有
元素。是谁触发了表单的提交


我尝试添加
returnfalse
更新
功能,但行为仍然相同。

如果表单中有按钮,则单击此按钮时表单正在提交

试着这样做:

<form onsubmit="update();return false;">

如果表单中有按钮,则单击此按钮时表单正在提交

试着这样做:

<form onsubmit="update();return false;">

表单中的
标记是提交按钮,除非您指定
type=button

此外,返回false应该出现在
onsubmit
事件上

<form id="form" action="xxx" method="get" onsubmit="return update();">

function update() {
...
    return false;
}

函数更新(){
...
返回false;
}
表单中的
标记是提交按钮,除非您指定
type=button

此外,返回false应该出现在
onsubmit
事件上

<form id="form" action="xxx" method="get" onsubmit="return update();">

function update() {
...
    return false;
}

函数更新(){
...
返回false;
}

您的成功在哪里?完成中的成功在哪里?因为您没有做任何事情来阻止它被提交。提交您使用内联处理程序的原因是什么?另外,您需要将处理程序看作是
函数(){update()}
的等价物,这应该告诉您为什么
返回falseupdate
函数中的code>不起作用。您的成功在哪里?
done
中的成功在哪里?因为您没有做任何事情来阻止它被提交。try submit这是您使用内联处理程序的原因吗?另外,您需要将处理程序看作是
函数(){update()}
的等价物,这应该告诉您为什么
返回false更新
功能中的code>不工作。