天天看點

關于asp.net前台js調用背景方法的問題

關于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>'&lt;%=GetNowTime("'</code><code>+JSGetTime+</code><code>'")%&gt;'</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&lt;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>'&lt;%=ss("'</code> <code>+ text + </code><code>'")%&gt;'</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

繼續閱讀