从asp.net c页面调用客户端javascript
call clientside javascript from asp.net c# page
我有一个c#asp.net页面和一个更新数据库的更新函数。在这个函数中,我想调用一些客户端javascript。我读了很多关于在page_load()中注册启动脚本的文章,但这总是在页面加载时触发的(很有趣!)
如何注册然后在更新函数中调用脚本?当用户单击"更新"按钮时触发。我已经尝试了以下(在我的功能内)
protected void doUpdate(object sender, EventArgs e) {
string jScript;
jScript = "<script type=text/javascript>alert('hello');<" + "/script>";
ClientScript.RegisterStartupScript(GetType(), "Javascript", jScript);
}
但它没有被解雇。有什么想法吗?非常感谢。
[更新]
它现在工作了-功能看起来像这个
protected void doUpdate(object sender, EventArgs e) {
ScriptManager.RegisterStartupScript(this, GetType(),"Javascript", "cleanup();",true);
}
Cleanup()是我的HTML中的javascript函数。感谢大家的帮助:)
如果导致回发的控件在UpdatePanel内,则需要使用
ScriptManager.RegisterStartupScript
您不能从web服务器"执行"客户端脚本(客户端知道服务器是谁,但不知道相反)。
克服这个限制的唯一方法是a.创建一个长的轮询过程,从服务器请求一些东西,服务器直到有东西要返回才完成请求(然后在客户端发出另一个请求)。
您真正想要的是支持websocket(双工)的通信。您可以查看alchemy websockets或SignalR(有一个非常好的动态代理生成库)。
"脚本总是在Page_Load上工作"的原因是它有效地将脚本标记注入为请求的页面返回的html中。
您的"更新"按钮可能使用标准的ASP按钮行为,这意味着在渲染时它是type="submit"
。既然是这样,你就可以使用:
Page.ClientScript.RegisterOnSubmitStatement
请记住,这将为每次回发注册一个脚本,而不仅仅是"更新"按钮。因此,如果您只想在单击Update时运行一些javascript,则需要检查EventTarget是否为UpdateButton.ClientID
。另外,RegisterOnSubmitStatement
总是添加<script>
标记,所以不要在javascript语句中包含这些标记。
更简单的解决方案是,ASP按钮本身也具有OnClientClick
属性。当在浏览器中单击按钮时,这将运行客户端代码(javascript)。
- SignalR 不从服务器调用客户端方法
- 调用客户端函数
- 在 SQL 依赖项更改后调用客户端函数
- 调用客户端 javascript/webpop 的表单的 DoS 风险/漏洞
- 如何先调用客户端脚本函数,然后再调用服务器端按钮单击事件
- 从asp.net c页面调用客户端javascript
- 在不打开新页面的情况下从浏览器调用客户端URL
- Signalr-连接已启动,但未使用websocket调用客户端事件
- 如何使用socket.io从服务器调用客户端方法
- Safari在服务器端的刷新/加载前不运行回调函数(调用客户端代码)
- ServiceNow UI操作调用客户端和服务器代码
- 服务器端函数调用客户端Javascript函数以获取结果
- JQuery-在Asp.Net中调用客户端的服务器端事件
- SignalR-Hub在IIS停止后,启动将不再调用客户端函数
- 会话属性在调用客户端重定向后丢失
- 客户端应该调用服务器还是服务器应该调用客户端?我错过了什么?
- 如何在NetSuite中调用客户端的PageInit函数
- 从c#页面方法调用客户端脚本(javascript,jquery等)
- 无法在OnDisconnected上调用客户端方法
- 从自定义方法调用客户端事件