Ajax Post URL无法在ASP.net图像按钮OnClientClick上工作。我想通过OnClientClick中的Ajax Post URL获取值。
<asp:ImageButton ID="btngo" runat="server" ImageUrl="~/oea_images/login_btn.png"
OnClick="btngo_Click" OnClientClick="clean_all();" Width="80px" />
function clean_all() {
try {
alert("enter");
$.ajax({
type: "POST",
url: "WebForm9.aspx/ForceOut",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msgs) {
//alert(msgs);
//alert(msgs.d);
if (msgs.d == "out") {
alert("check");
}
}
});
} catch (ex) {
alert(ex.Message);
}
}
答案 0 :(得分:2)
return false
以避免回发。同时删除asp图像按钮的OnClick属性并尝试。
var varglobal=false;
function clean_all() {
try {
if(!varglobal){
alert("enter");
$.ajax({
type: "POST",
url: "WebForm9.aspx/ForceOut",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msgs) {
//alert(msgs);
//alert(msgs.d);
if (msgs.d == "out") {
alert("check");
varglobal=true;
$("#btngo").click();// hopes master page isn't used.
}
}
});
}
} catch (ex) {
alert(ex.Message);
}
return varglobal;
}
由于它是一个ASP图像按钮, return false
可能无法阻止回发(回发不是input[type=image]
的默认功能) 。请参考here了解具体方法。
当发生回发时,对服务器的Ajax请求将被取消,并且将执行错误功能。您可以通过阻止回发来避免这种情况。
答案 1 :(得分:0)
如果使用这种方式,可以避免回发,但之后不能直接调用服务器功能。你必须在成功回调时回发。
您可以使用简单的锚标记,不需要asp:imagebutton。
<asp:ImageButton ID="btngo" runat="server" ImageUrl="~/oea_images/login_btn.png"
OnClientClick="return clean_all();" Width="80px" />
function clean_all() {
try {
alert("enter");
$.ajax({
type: "POST",
url: "WebForm9.aspx/ForceOut",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msgs) {
if (msgs.d == "out") {
//call btngo_Click here with __doPostback()
// or execute the code inside "btngo_Click"
// on server after "ForceOut" completed
}
}
});
} catch (ex) {
alert(ex.Message);
}
return false;
}