【问题标题】:Why does an alert redirect my page?为什么警报会重定向我的页面?
【发布时间】:2013-09-13 05:29:22
【问题描述】:
为什么每次我向我的 ajaxform 发出警报时,页面都会重定向到它的 php 脚本?但是当我删除警报时,ajax 不会重定向它。我不希望我的页面重定向到它的 php 脚本。
$(document).ready(function(){
$("#save").click(function(){
$("#f1").ajaxForm({
alert("Submit Successful!");
});//ajaxform
});
});
【问题讨论】:
标签:
javascript
php
jquery
ajax
【解决方案1】:
替换
$("#save").click(function(){
与
$("#save").click(function(e){
e.preventDefault();
将事件作为参数传递并使用event.preventDefault(),因此页面不会被重定向。
Official Document
【解决方案2】:
你没有正确使用几个东西。试试这个:
$(document).ready(function() {
$("#save").click(function(e) {
e.preventDefault(); //cancel default action (not strictly necessary...)
$("#f1").ajaxForm(function() { //N.B. 'function() ' added - before it was an object!
alert("Submit Successful!");
});
});
});
【解决方案3】:
尝试停止默认事件行为。
$("#save").click(function(e){
e.preventDefault();
【解决方案4】:
使用return false: 停止对服务器的请求
$(document).ready(function () {
$("#save").click(function () {
$("#f1").ajaxForm(function(){
alert("Submit Successful!");
return false;//add return false to stop the request to server
}); //ajaxform
});
});
【解决方案5】:
这是正常行为(如果单击的元素是指向另一个页面的锚标记):您单击一个链接,它会重定向您的页面。
如果您想将该链接用作按钮并将某个操作绑定到它,您绝对应该停止该链接的正常行为:防止它重定向页面。
这可以通过多种方式实现,但最好的方式(至少从语义的角度来看)是在实际点击事件上调用preventDefault 方法:
$('a').on('click', function(event){
// prevents the normal behavior of this "click" action
// in this case, it prevents the link from changing the url
event.preventDefault();
//.. your logic here
});
【解决方案6】:
添加preventDefault() 或return false;。
$("#save").click(function(e) {
$("#f1").ajaxForm({
alert("Submit Successful!");
});//ajaxform
e.preventDefault();
//or
return false;
});
【解决方案7】:
试试这个使用 preventDefault()
$(document).ready(function(){
$("#save").click(function(e){
//Stay in the same page
e.preventDefault();
$("#f1").ajaxForm({
alert("Submit Successful!");
});//ajaxform
});
});