js 点击事件调用C#后台方法,第二次点击才有用?

胡萝卜-z 2018-11-23 09:18:29
求指教~
js 点击事件调用后台方法,第二次点击才有用?









...全文
484 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
asp.net 有着十几套”编程套路“,相当混乱,而且没有一套是最近10年前端 web 企业级应用系统开发潮流技术。这是 asp.net 的悲哀。
  • 打赏
  • 举报
回复
这里跟 ajax 其实就是”天敌“,根本不是同一类机制。 本身的技术思路,是要顺着 asp.net 的概念来管理页面上的状态值。而使用 ajax 就意味着 asp.net 也扔掉,换成纯粹前端技术概念,这其实是已经反复说过的意思。 UpdatePanel 实际上跟 asp.net webform 机制没有什么差别,它只是在前端刷新 html 时进行比较并且仅仅更新差异部分(可以说微软早在 React 出现之前很多年就把类似”虚拟 dom“的主要技术玩剩下了)。但是 UpdatePanel 仍然是 asp.net 的服务器端一遍遍刷新 html 机制的套子中活着的理念,而不是前端机制,所以它无法跟 ajax 来比较。
xiaoxiangqing 2018-11-26
  • 打赏
  • 举报
回复
本页面异步,可以用asp:UpdatePanel,其它页面异步,可以用ajax
  • 打赏
  • 举报
回复
第一次点击按钮提交刷新页面,这时候后台可以正确获得 btnComfirm_C,之后输出/刷新前端页面时执行了
<% = ...... %>
中的代码(在输出 html 流中使用 .net 的 Stream.Wrte 语句输出了这个值)。直到这里都是对的。如果你调试后台 c# 代码、或者刷新前端页面时调试 html 代码,都可以看到是对的。 但是你的代码,只有第二次点击按钮之后,才会在 log 中记录第一次刷新页面 html 时产生的 str 变量的值。此时显示第一次页面 html 中的 str,并且开始第二次提交新值,是混合在一起的。所以你看起来是第二次修改值时才看到上一次的 log。 从开发技术山来说,调试要学会断点c#代码以及查看html源代码、断点js 代码并调试前端变量值。而你现在还根本不会调试,也就是说还不会 asp.net 正规开发和 js 正规开发。只会用眼睛看现象,还不会根据程序的机制来调试。
liusa1997 2018-11-25
  • 打赏
  • 举报
回复
注意的是,如果是提交的表单则ajax是{
url:"",
method:"post",
contenttype:false,//必须
data:"",
processData: false,//必须
}
liusa1997 2018-11-25
  • 打赏
  • 举报
回复
一般前台向后台传值是动态提交的也就是ajax
  • 打赏
  • 举报
回复
各种设计都有一套背景知识,并不是只看一点点的皮毛,我们要了解 lz 的背景知识。比如说我们可以清楚地看到 lz 贴出了btnComfirm_C 源代码,我们应该看懂 lz 的知识体系。我们不理解别人的体系,只按照自己的体系来思考设计答案,那么编程行为就好像只有3秒钟记忆力的鱼,而不是前后连贯地靠谱的工程师在搞开发了。
  • 打赏
  • 举报
回复
引用 13 楼 qq_41315735 的回复:
用ajax提交就好了嘛对不对
如果 lz 的代码看不懂,别的东西又能真理解吗?比如说 ajax 提交数据之后怎么写到 Htext 的状态中能知道吗?
Csdn技术大神 2018-11-25
  • 打赏
  • 举报
回复
用ajax提交就好了嘛对不对
  • 打赏
  • 举报
回复
我们看一个程序员是专业工程师的还是编程爱好者,就是看调试。所以遇到问题要提交调试画面,要知道每一步的调试结果。一看调试步骤一看内部数据就知道了,而你不看内部数据,只看表面,就不知道原因了。
-一个大坑 2018-11-24
  • 打赏
  • 举报
回复
这个好像可以

$('#btn1').click(function () {
                var ssss = '6666';
                $.ajax({
                    type: 'post',
                    url: 'WebForm1.aspx/GetPost',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify({ strTXT: ssss }),
                    dataType: 'json',
                    success: function (data) {
                        alert(data.d);
                    },
                    error: function (err) {
                        alert('错误!');
                    }
                })

            })

 [WebMethod]
        public static string GetPost(string strTXT)
        {
            return strTXT;
        }
-一个大坑 2018-11-24
  • 打赏
  • 举报
回复
引用 6 楼 吉普赛的歌 的回复:
[quote=引用 5 楼 -一个大坑 的回复:] [quote=引用 2 楼 吉普赛的歌 的回复:] 千万不要直接用 js 调用后台方法。 所有调用后台的方法, 一律用 $.ajax
ajax调用后台传值怎么传? data:{'rno':$('#txt').val()} 这样传报错[/quote] 你参考: https://bbs.csdn.net/topics/392482397 这个贴子中我 #8 的代码吧[/quote] 我的不需要那么麻烦,就传一个参数 data:"{'s':'"+123+"'}",网上找的这个,不知道是不是因为中文,两个方法一个可以,一个报错
吉普赛的歌 2018-11-24
  • 打赏
  • 举报
回复
引用 5 楼 -一个大坑 的回复:
[quote=引用 2 楼 吉普赛的歌 的回复:] 千万不要直接用 js 调用后台方法。 所有调用后台的方法, 一律用 $.ajax
ajax调用后台传值怎么传? data:{'rno':$('#txt').val()} 这样传报错[/quote] 你参考: https://bbs.csdn.net/topics/392482397 这个贴子中我 #8 的代码吧
-一个大坑 2018-11-24
  • 打赏
  • 举报
回复
引用 2 楼 吉普赛的歌 的回复:
千万不要直接用 js 调用后台方法。 所有调用后台的方法, 一律用 $.ajax
ajax调用后台传值怎么传? data:{'rno':$('#txt').val()} 这样传报错
圣殿骑士18 2018-11-24
  • 打赏
  • 举报
回复
前台调用后台,不是这样用的。你还没理解bs架构的基本原理,仍然用cs的方式在做开发。
xuzuning 2018-11-24
  • 打赏
  • 举报
回复
runat=“Server" 是通过 XMLHTTP 实现的(现在也可能用到 XMLHttpRequest)
总之与 jQuery 分属两套系统
所以响应出现问题也是情理之中的
吉普赛的歌 2018-11-24
  • 打赏
  • 举报
回复
千万不要直接用 js 调用后台方法。 所有调用后台的方法, 一律用 $.ajax
nxwspace 2018-11-24
  • 打赏
  • 举报
回复
感觉不是第二次才有用,是第一次没有获取到值,调试一下看看.

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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