關于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