关于asp.net前台js调用后台方法的问题
最近在坛子里解答坛友的问题,发现有好几个问题,都是js调用C#后台方法的问题。这里也总结一下,给后来人参考参考。
前台:
1
2
3
4
5
6
<code>function</code> <code>QianTai()</code>
<code>{</code>
<code> </code><code>var</code> <code>JSGetTime = </code><code>"那个啥地区时间:"</code><code>;</code>
<code> </code><code>var</code> <code>JSstr = </code><code>'<%=GetNowTime("'</code><code>+JSGetTime+</code><code>'")%>'</code><code>;</code>
<code> </code><code>alert(JSstr);</code>
<code>}</code>
后台:
<code>public</code> <code>string</code> <code>GetNowTime(</code><code>string</code> <code>str)</code>
<code> </code><code>string</code> <code>aspGetTime = DateTime.Now.ToString();</code>
<code> </code><code>return</code> <code>str+</code><code>" "</code><code>+aspGetTime;</code>
像上面这样是可以正确弹出时间的。
但是像下面这个就不可行。
7
8
<code>function</code> <code>aaa(){</code>
<code> </code><code>for</code> <code>(</code><code>var</code> <code>i=0;i<10;i++){</code>
<code> </code><code>text+=pic[i]+</code><code>"ddddddd"</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>//我想把text传到后台解析,通过split分割返回第一值</code>
<code> </code><code>var</code> <code>asdf = </code><code>'<%=ss("'</code> <code>+ text + </code><code>'")%>'</code><code>;</code>
<code> </code><code>alert(asdf);</code>
<code>public</code> <code>string</code> <code>ss(</code><code>string</code> <code>picURLs){</code>
<code> </code><code>string</code> <code>pic;</code>
<code> </code><code>string</code><code>[] pics = Regex.Split(picURLs,</code><code>"ddddddd"</code><code>);</code>
<code> </code><code>pic=pics[0];</code>
<code> </code><code>return</code> <code>pic;</code>
解决方案是:要么在前台split,要么用ajax来调后台。这里后台用到了regex正则替换。但是这里不起作用,因为传到后台的picURLs不是1111ddddddd这样的字符串,而是"'+text+'"。即后台方法优先执行,还没等到js赋值,已经传过去了,所以这里的正则替换不起作用。可以单步调试一下,看一下执行的顺序。
本文转自 guwei4037 51CTO博客,原文链接:http://blog.51cto.com/csharper/1345992