编辑:我的具体问题是关于“返回CheckStatus(this,event,9000)”。 CheckStatus函数返回true,但由于某种原因,OnClick(服务器端)永远不会执行。 从Ajax请求中读取正确的值没有问题。这已经过测试并相应地起作用。
我在遗留应用程序上使用webforms。我正在尝试使用ImageButton对服务器进行快速检查。满足该条件时,用户会收到确认对话框。当他点击“是”(或“确定”)时,表格会被发布,否则不会采取任何行动。
这应该很简单,但是下面的代码似乎有些问题,因为按钮从不在服务器上执行OnClick事件。
ASP.NET imagebutton:
<asp:ImageButton ID="btnBook" runat="server" CommandName="book" ImageUrl="~/modulas/images/icon_forward.gif" OnClientClick=<%# "return CheckStatus(this, event, " & Eval("vacationid") & ");"%> />
在浏览器中会出现这种情况:
<input type="image" name="btnBook" id="btnBook" src="images/icon_forward.gif" onclick="return CheckStatus(this, event, 7655);">
运行的javascript函数如下:
function doAjax(myUrl, vacId) {
var result;
$.ajax({
type: "GET",
async: false,
url: myUrl + '?vacId=' + vacId,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (ajaxResult) {
var resultCode = parseInt(ajaxResult.d);
if (resultCode > 0) {
result = confirm('Are you sure?');
}
},
error: function (message, message2, message3) {
alert("error!");
result = false;
}
});
return result;
}
function CheckStatus(obj, event, vacId) {
event.preventDefault();
var myUrl = "/GetVacationStatus";
return doAjax(myUrl, vacId);
}
在服务器上,OnClick的处理方式如下:
(按钮位于gridview内)
Protected Sub grdListing_RowDataBound1(sender As Object, e As GridViewRowEventArgs) Handles grdListing.RowDataBound
If e.CommandName = "book" then
Book()
End If
End Sub
Private Function Book() As Boolean
'Do something
End Function
我省略了真正的商业逻辑。如果我从按钮中删除javascript函数,那么这段代码执行完美,但我还需要javascript代码才能工作
对我来说这应该是非常简单的,但是发生的事情是我在确认对话框中点击“是”,没有任何反应。我在确认对话框中单击“否”,再没有任何反应。而且我知道可能出现什么问题。
有没有人看到这个问题,或者是否有人对我可以尝试的事情有更多想法?
非常感谢