我在下面有这个代码。我提交表格之后我预计它将转到“/frontend_dev.php/coche1/new”,但它永远不会(我在相应的方法中添加了一个模具(“输入”),但是没有显示“输入”)... < / p>
<script type="text/javascript" src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js'></script>
<script type="text/javascript">
$(document).ready(function () {
$('.formulario').submit(function () {
form_data = $.param($(this).serializeArray());
$.ajax({
url: "/frontend_dev.php/coche1/new",
type: "POST",
data: form_data,
success: function () {
alert("Data Saved: ");
}
});
});
});
</script>
<form class="formulario" id="1">
<input type="submit" value="Save">
<label for="coche1_marca">Marca</label>
<input type="text" id="coche1_marca" value="FJSDF" name="coche1[marca]">
<label for="coche1_modelo">Modelo</label>
<input type="text" id="coche1_modelo" value="FJSDÑF" name="coche1[modelo]">
</form>
任何帮助?
此致
哈维
答案 0 :(得分:3)
您需要在.submit()
处理程序的末尾返回false。否则它会触发AJAX,但是也会立即提交表单,这会导致页面重新加载,因为表单本身没有任何操作。添加return false表示AJAX按预期触发。
答案 1 :(得分:2)
您没有对prevent the default action提交表单做任何事情,因此它将其提交到action属性中指定的URL(尽管由于您未能包含该强制属性,因此它使用当前URL) 。这发生在XHR请求返回之前,因此成功方法永远不会触发。
答案 2 :(得分:1)
使用此
...
$('.formulario').submit(function (event)
{
event.preventDefault(); // This will stop the form from submitting.
...
return false; // Should also stop the form from submitting, but have ran into cases where it does not. Still, include it for good measure.
}
以下是关于事件参数的一些其他注意事项:
event.preventDefault() // Stops default actions, link redirection, form submission, etc...
event.stopPropagation() // Stops the event from propagating up the DOM tree.
event.stopImmediatePropagation() // Stops the current event and ALL other events on the element from propagating any further up the DOM tree.
有关JQuery中事件传播的更多信息,请参阅此处:http://www.c-sharpcorner.com/UploadFile/satisharveti/665/Default.aspx