后台C#代码调用前台页面的js无法复制的问题

threadroc 2020-11-05 05:25:36
我的需求是 js调用C#代码,然后C#代码把执行结果返回给js代码,js代码能接收到. 然后复制返回的值.

目前有2个解决方案都有问题.
第一个是如下js代码
function testClick() {
var strHello = "<%=test()%>";
alert(strHello);
}
test()函数的的返回值是一个字符串,如果执行快没事,js代码啊的strHello 变量可以接收到C#代码返回的值.
如果test()函数里面比较复杂,执行的慢了,strHello 是接收不到值的.

第二个解决方案是
js代码直接调用了test(),但是不接收值,然后test()函数里是这样的:

public void test()
{
ScriptManager.RegisterStartupScript(this.form1, this.Page.GetType(), "", "copyCallback('hello');", true);
}

js函数是这样的:

function copyCallback(text) {
var input = document.createElement('input');
input.setAttribute('id', "copyInput");
input.setAttribute('value', text);
document.getElementsByTagName('body')[0].appendChild(input);
document.getElementById("copyInput").select();
if (document.execCommand('copy')) {
document.getElementById("copyInput").remove();
}
else {
document.getElementById("copyInput").remove();
}
}


C#的test()函数调用了js的copyCallback函数把参数hello传给了copyCallback,然后就是复制代码了,但是会复制失败.
前台页面直接调用copyCallback函数是可以复制的,但是后台调用这个函数就复制失败了.

这2个解决方案,能解决任意一个都可以实现的的需求,请问有什么办法吗?
...全文
8901 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你调试下先后顺序, 就明白了。 JS和 代码都 点上调试。
webjock 2020-11-18
  • 打赏
  • 举报
回复
引用 楼主 threadroc 的回复:
我的需求是 js调用C#代码,然后C#代码把执行结果返回给js代码,js代码能接收到. 然后复制返回的值. 目前有2个解决方案都有问题. 第一个是如下js代码 function testClick() { var strHello = "<%=test()%>"; alert(strHello); } test()函数的的返回值是一个字符串,如果执行快没事,js代码啊的strHello 变量可以接收到C#代码返回的值. 如果test()函数里面比较复杂,执行的慢了,strHello 是接收不到值的. 第二个解决方案是 js代码直接调用了test(),但是不接收值,然后test()函数里是这样的: public void test() { ScriptManager.RegisterStartupScript(this.form1, this.Page.GetType(), "", "copyCallback('hello');", true); } js函数是这样的:

        function copyCallback(text) {
            var input = document.createElement('input');
            input.setAttribute('id', "copyInput");
            input.setAttribute('value', text);
            document.getElementsByTagName('body')[0].appendChild(input);
            document.getElementById("copyInput").select();
            if (document.execCommand('copy')) {
                document.getElementById("copyInput").remove();
            }
            else {
                document.getElementById("copyInput").remove();
            }
        }
C#的test()函数调用了js的copyCallback函数把参数hello传给了copyCallback,然后就是复制代码了,但是会复制失败. 前台页面直接调用copyCallback函数是可以复制的,但是后台调用这个函数就复制失败了. 这2个解决方案,能解决任意一个都可以实现的的需求,请问有什么办法吗?
你用ajax不香吗?

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧