asp.net javascript .click() 事件未在服务器上触发
asp.net javascript .click() event not firing on server
我有以下代码,在开发机器上运行良好。但是,当我将其部署到 IIS 时,the .click()
不会触发。
- 我
有下拉框,当选择状态时,我添加以下代码以打开 RadWindow
if (ddlStatusID.SelectedValue.ToString() == "2") btnUpdateStatus.Attributes.Add("onclick", "return OpenWindow2('" + ResolveUrl("~/Request/AddBillableTime.aspx? RequestId=" + RequestId.ToString()) + "','650','320');"); else btnUpdateStatus.Attributes.Add("onclick", "");
在弹出页面中,当用户单击我添加的按钮时,执行以下操作
ClientScript.RegisterStartupScript(this.GetType(), "CloseWindow", "ClosePopup();", true);
这是ClosePopup javascript。
function ClosePopup() {
//debugger;
alert('This is before closing the window');
var oWindow = GetRadWindow();
oWindow.argument = null;
oWindow.close();
alert('This is after closing the window');
oWindow.BrowserWindow.ButtonClick();
}
在主窗口中,我有以下javascript,它在上述javascript的最后一行中被调用。
function ButtonClick() { //debugger; alert('This is before button click!'); var btnUpdateStatus = document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus'); alert('This is getting the button!'); btnUpdateStatus.setAttribute("onclick", ""); alert('This is setting the button!'); btnUpdateStatus.click(); alert('This is after clicking the button!');
}
我已经使用警报来检查javascript函数的执行程度。
当我使用 Visual Studio 运行它以及在本地 IIS 服务器中托管它时,整个功能运行良好。但是,当我将其部署到服务器时,click() 事件停止触发。
如果代码中有任何错误,请告诉我。
时间研究这个问题,因为我被分配到了一项新任务。但是一旦我回到同一个任务中,就必须修复它。我从我的一个朋友那里得到了一些帮助来解决这个问题。我不得不稍微改变当前的逻辑,并在下面解释了解决方案。
我更改了ButtonClick
函数,如下所示,以使用 __doPostBack
函数创建手动回发到页面。
function ButtonClick() {
__doPostBack('btnUpdatePage', '');
return;
}
我处理了从页面的Page_Load
方法返回的帖子。
if (Request["__EVENTTARGET"] == "btnUpdatePage")
{
UpdateStatus();
}
如果回发事件目标与 __doPostBack
方法中分配的事件目标匹配,则我调用了一个方法来更新状态。
这样我就可以避免这个问题。但我不知道为什么不使用旧的ButtonClick
函数触发该事件。
如果代码在您的 PC 上运行良好,那么对我来说唯一看起来可疑的是这 2 行:
1. document.getElementById('ctl00_ContentPlaceHolder1_btnUpdateStatus');
2. btnUpdateStatus.setAttribute("onclick", "");
对于第一行,您应该这样做,而不是:
document.getElementById('<%=btnUpdateStatus.ClientID%>');
对于第二行,似乎您将onclick
处理程序设置为""
基本上不应该执行任何操作。
这可能根本不是问题。最好的办法是用Firebug调试它,在被调用的相应Javascript函数中放置一个断点。
- 提示使用服务器端事件处理程序激活JavaScript
- 未命中服务器发送的事件侦听器
- 服务器上的Meteor客户端断开连接事件
- 服务器端事件+客户端事件与Websocket
- 服务器发送的事件直到脚本完成才更新
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 为什么我没有得到对Comet服务器流事件的实时响应
- ServiceStack JavaScript服务器事件客户端的身份验证
- 服务器用Ruby Grape发送事件
- 销毁窗口.重新调整事件订阅服务器的大小
- 通过将文件上载到ASHX处理程序来实现SSE(服务器发送的事件)
- 从javascript强制服务器TextChanged事件
- 用于显示服务器端验证结果的 Jqgrid 编辑事件
- asp.net javascript .click() 事件未在服务器上触发
- 服务器触发客户端事件两次
- 套接字发生了什么's在'断开连接'事件(服务器端)
- jQueryUI FullCalendar:从服务器获取事件后的回调
- 从服务器获取数据,并使用$http服务和ng-change在select事件上显示它
- 如何在 Elm 中捕获服务器事件
- 在 HTML 按钮单击上的 JavaScript 函数之后调用服务器事件