Javascript jQuery在url的末尾附加#,即使我返回false;
我有一个代码,上面写着return false;这样它就不会在执行后将#附加到url的末尾,但它仍然会这样做。你知道我做错了什么,如何/在哪里最好返回false吗Javascript jQuery在url的末尾附加#,即使我返回false;,javascript,jquery,Javascript,Jquery,我有一个代码,上面写着return false;这样它就不会在执行后将#附加到url的末尾,但它仍然会这样做。你知道我做错了什么,如何/在哪里最好返回false吗 // Called right away after someone clicks on the vote up link $('.vote_up').mouseup(function() { $("#loading").show(); var problem_
// Called right away after someone clicks on the vote up link
$('.vote_up').mouseup(function()
{
$("#loading").show();
var problem_id = $(this).attr("data-problem_id");
vote(problem_id , 1);
//Return false to prevent page navigation
return false;
});
$('.vote_down').mouseup(function()
{
$("#loading").show();
problem_id = $(this).attr("data-problem_id");
vote ( problem_id , -1 );
//Return false to prevent page navigation
return false;
});
// Global function
var vote = function(problem_id , vote)
{
var dataString = 'problem_id=' + problem_id + '&vote=' + vote;
// The person is actually logged in so lets have him vote
$.ajax({
type: "POST",
url: "/auth/check_login.php",
dataType: "json",
success: function(data)
{
$.ajax({
type: "POST",
url: "/problems/vote.php",
data: dataString,
success: function(html)
{
$("#loading").hide();
if ( html == "not_logged_in" )
{
queue.login = false;
//set the current problem id to the one within the dialog
$problemId.val(problem_id);
// Try to create the popup that asks user to log in.
$("#loginpopup").dialog( {title: 'Please Login To Vote'} ); // title: 'Login Dialog'
// prevent the default action, e.g., following a link
return false;
}
else
if ( html == "already_voted" )
{
// Display a dialog box saying that the user already voted
$('<div>You already voted this way on this problem.</div>').dialog( {title: 'Already Voted'});
// show div which says un-important, hide div which says important
$("#support").hide();
$("#dont_support").show();
return false;
}
else
if ( html == "error_getting_vote" )
{
$('<div />').html('Error getting existing votes.').dialog();
}
else
{
if ( vote == -1 )
{
$("#support").show();
$("#dont_support").hide();
}
else
{
$("#support").hide();
$("#dont_support").show();
}
// Now make a call to AJAX to get the count of votes
$.ajax({
type: "POST",
url: "/problems/get_vote_count.php",
data: dataString,
success: function(html)
{
var class_name = ".votes_"+problem_id;
$(class_name).text(html);
return false;
}
});
return false;
}
},
error: function(html)
{
$("#loading").hide();
return false;
} // End of error case
}); // Closing inner AJAX call.
},
error: function(data)
{
$("#loading").hide();
$("#loginpopup").dialog( {title: 'Please Login To Vote'} );
return false;
} // End of error
}); // End of outer AJAX.
return false;
};
//在有人点击投票链接后立即调用
$('.vote_up').mouseup(函数()
{
$(“#加载”).show();
var problem_id=$(this.attr(“数据问题_id”);
投票(问题编号1);
//返回false以防止页面导航
返回false;
});
$('.vote_down').mouseup(函数()
{
$(“#加载”).show();
problem_id=$(this).attr(“数据问题_id”);
投票(问题编号-1);
//返回false以防止页面导航
返回false;
});
//全局函数
var投票=函数(问题编号,投票)
{
var dataString='problem_id='+problem_id+'&vote='+vote;
//此人实际上已登录,所以让他投票
$.ajax({
类型:“POST”,
url:“/auth/check\u login.php”,
数据类型:“json”,
成功:功能(数据)
{
$.ajax({
类型:“POST”,
url:“/problems/vote.php”,
数据:dataString,
成功:函数(html)
{
$(“#加载”).hide();
如果(html==“未登录”)
{
queue.login=false;
//将当前问题id设置为对话框中的问题id
$problemId.val(问题id);
//尝试创建请求用户登录的弹出窗口。
$(“#loginpopup”).dialog({title:'请登录投票'});//title:'登录对话框'
//防止默认操作,例如,跟踪链接
返回false;
}
其他的
如果(html==“已投票”)
{
//显示一个对话框,说明用户已投票
$(“您已经就这个问题以这种方式投票了。”).dialog({title:'已投票'});
//显示表示不重要的div,隐藏表示重要的div
$(“#支持”).hide();
$(“#不支持”).show();
返回false;
}
其他的
如果(html==“获取投票时出错”)
{
$('').html('获取现有投票时出错。').dialog();
}
其他的
{
如果(投票==-1)
{
$(“#支持”).show();
$(“#不支持”).hide();
}
其他的
{
$(“#支持”).hide();
$(“#不支持”).show();
}
//现在打电话给AJAX以获取选票计数
$.ajax({
类型:“POST”,
url:“/problems/get\u vote\u count.php”,
数据:dataString,
成功:函数(html)
{
var class_name=“.vows_”+问题id;
$(类名).文本(html);
返回false;
}
});
返回false;
}
},
错误:函数(html)
{
$(“#加载”).hide();
返回false;
}//错误案例结束
});//关闭内部AJAX调用。
},
错误:函数(数据)
{
$(“#加载”).hide();
$(“#loginpopup”)。对话框({title:'请登录投票'});
返回false;
}//错误结束
});//外部AJAX的结束。
返回false;
};
您应该将事件侦听器绑定到单击事件,而不是鼠标p
。当触发mouseup
时,默认行为已经发生,不能再取消
$('.vote_down').click(function(e) {
e.preventDefault();
// Rest of code
另外,根据您的代码判断,您有单独的页面可供投票:
- AJAX请求-是否已登录
- AJAX请求-投票
如果投票页面不包含某种身份验证,则此模型非常不安全。通过创建对投票页面的人工请求,用户可以轻松绕过登录页面
您应该合并登录和投票页面。将链接语法从
更改为
,而不更改js代码。@RobW有趣…我认为这不是一个错误,因为js控制台没有报告任何问题…嗯…想知道它可能是什么。而不是返回false
您应该将事件(e
)传递给ev的回调