当我使用AJAX提交表单时,event.preventDefault()
的jQuery不起作用。
以下是我的HTML代码:
<form method="post" action="my_post_create_url" id="post-form">
<textarea id="post-text" placeholder="Compose a new post"></textarea>
<button type="submit" id="submit-post">Post</button>
</form>
这是我的jQuery代码:
$('#post-form').submit(function(e) {
e.preventDefault();
var url = $(this).attr("action");
$.ajax({
type: "POST",
url: url, // 'my_post_create_url'
data: $(this).serialize(),
dataType: "html",
success: function(msg){
alert("Success!");
}
});
});
以下是我在控制器中处理它的方法:
public function createAction(Request $request){
// some code here ...
$form->handleRequest($request);
if ($form->isValid()) {
// some code here ...
// ... then redirection
}
return $this->render(...)
}
我甚至在jQuery代码的末尾尝试了'return false',但它仍然重定向我:(
似乎$('#post-form').submit(function(e)
在Chrome和Safari上都没有触发任何进一步的帮助?
我已删除了基本HTML文件中的一些javascript文件,现在它可以在所有浏览器中正常运行。问题出在我的js文件中的其他地方。
答案 0 :(得分:1)
嗯,问题来自window.popsate,其行为有所不同,具体取决于Chrome(和Safari)或Firefox(和Opera),这是我的一个js文件中存在问题的行:
$(window).on("popstate", function(e) { ... });
对于那些面临同样问题的人来说,这里有一些问题的答案: Popstate on page's load in Chrome