当基于ajax调用的值为true时,需要重定向到页面。问题是,如果返回true或false,则页面将被重定向。
<a class="btn btn-warning" onclick="return clickthis(25007); " href="test.aspx?id=eheAhgpAS38=">Start </a>
function clickthis(obj) {
var bValid = false;
function ajax1() {
return $.ajax({
type: "POST",
url: "order.aspx/ActivateLocation",
data: '{id:' + obj + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(r) {
if (r.d == "1") {
bValid = true;
} else {
$('#overlay').remove();
$.growl.error({
title: "Error",
message: "An error occurred, Please try again."
});
bValid = false;
}
}
});
}
$.when(ajax1()).done(function(a1) {
return bValid;
});
}
答案 0 :(得分:2)
首先,没有事件传递给clickthis()
函数,在这方面,您似乎与不引人注目的事件处理程序混淆了。另请注意,您尝试从done()
处理程序执行操作时,无法从异步方法调用返回任何内容。相反,您可以只在window.location.assign()
回调中调用$.ajax()
。
<a class="btn btn-warning" data-id="25007" href="test.aspx?id=eheAhgpAS38=">Start </a>
$('a.btn').click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "order.aspx/ActivateLocation",
data: { id: obj },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(r) {
$('#overlay').remove();
if (r.d == "1") {
window.location.assign($(this).attr('href'));
} else {
$.growl.error({
title: "Error",
message: "An error occurred, Please try again."
});
}
}
});
});
请注意,在以上示例中,我正在为data
提供对象。这是优先于将字符串串联在一起的做法。
答案 1 :(得分:0)
问题已解决。 我用按钮代替了锚标签。