ASP.NET如和实现与JS的相互配合,点击按钮后先JS确认在执行后台处理

ASP.NET如和实现与JS的相互配合,点击按钮后先JS确认在执行后台处理,第1张

在JS中d出一个确认窗口,根据返回值决定是否调用后台处理函数,如果你的确认窗口是自定义窗体的话,那就更简单,JS中都不要判断了,直接打开这个确认窗口,然后在窗口中增加判断,这样的好处是,JS写着简单,调用后台处理函数的逻辑判断写到确认窗口中,我可以用服务器事件,这样,在网页中就看不到我后台处理函数相关信息了

可能性很多,列举2个

1、在你的这句代码前面或后面有ResponseEnd代码

2、你这句代码后面还有别的RegisterStartupScript方法调用,并且也叫ss,把这个脚本覆盖了

关键点在于,你查看浏览器得到的html源代码,看看里面有没有这句:

<script type='text/javascript'>myconfirm();</script

事实是点击Button后页面回发(估计没错的话你的Button是服务器控件),导致的显示一瞬间然后消失。正确写法不是在OnClick事件,而是Button的OnClientClick事件中调用JS,Good Luck!

页面上放一个服务器端控件Button ,这个Button放在一个隐藏的DIV中,添加这个Button的OnClick后台事件,然后你可以在js事件里通过_doPostBack调用这个Button的客户端事件

从你提供的资料不太能看出执行的过程

如果你是按以下所说组织你的代码: 上传文件是在一个按钮的Click中执行, 而RegisterStartupScript则是在Click处理中判断到文件已经存的情况下才执行 那么, 当然是要Click事件全部完成后才运行myconfirm

如果真是如上述的情况, 那么你肯定是把ASPNET的Server端和浏览器端的JavaScript的处理过程混淆在一起了: 认为在Click事件的处理方法中使用RegisterStartupScript, 就一定要等浏览器的输出脚本执行完, 前后面的代码才会继续执行 但是事实上, RegisterStartupScript的本质其实只是负责在输出给浏览器的HTML代码中增加一段JavaScript代码, 而这段JavaScript代码能够在浏览器载入页面完成的时候得到执行而已

若要做到你所说的在文件存在时要用户确认后再进行覆盖, 那么你应该自己用JavaScript写上传按钮的处理脚本(不是Server端的Click事件, 在Click事件里处理文件已经上传到Server了), 在此脚本函数中将上传文件的资料(主要是文件名, 就是依此判断文件存在的资料)使用Ajax或自己写的其他能够向Server发送请求的方法, 将资料传入Server, 而在Server的处理中进行文件的存在性判断, 然后根据此返回(上传页面并未提交)的结果决定是否要显示确认窗口

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12187943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存