js 调用服务器端方法总结
javascript函數中執行C#代碼中的函數:
方法一:1、首先建立一個按鈕,在后臺將調用或處理的內容寫入button_click中;
??????? 2、在前臺寫一個js函數,內容為document.getElementById("btn1").click();
??????? 3、在前臺或后臺調用js函數,激發click事件,等于訪問后臺c#函數;
方法二:1、函數聲明為public????????????
?????????? 后臺代碼(把public改成protected也可以)
?????????? public string ss()
?????????? {
????????????? return("a");
?????????? }
??????? 2、在html里用<%=fucntion()%>可以調用
?????????? 前臺腳本
?????????? <script language=javascript>
?????????? var a = "<%=ss()%>";
?????????? alert(a);
?????????? </script>
方法三:1、<script language="javascript">
?????????? <!- -
?????????? function __doPostBack(eventTarget, eventArgument)
?????????? {
????????????? var theForm = document.Form1;???? //指runat=server的form
????????????? theForm.__EVENTTARGET.value = eventTarget;
????????????? theFrom.__EVENTARGUMENT.value = eventArgument;
????????????? theForm.submit();
?????????? }
?????????? -->
?????????? </script>
?????????? <input id="Button1" type="button" name="Button1" value="按鈕" onclick="javascript:__doPostBack('Button1','')">
???????
方法四:<script language="javascript">
function SubmitKeyClick()
{
??? if (event.keyCode == 13)
??? {
??????? event.cancelBubble = true;
??????? event.returnValue = false;
??????? document.all.FunName.value="你要調用的函數名";
??????? document.form[0].submit();
??? }
}
</script>
<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
<input type="hidden" name="FunName"> 〈!--用來存儲你要調用的函數 --〉
在.CS里有:
public Page_OnLoad()
{
if (!Page.IsPost())
{
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
//根據傳回來的值決定調用哪個函數
switch(strFunName)
{
case "enter()":
enter() ; //調用該函數
break;
case "其他":
//調用其他函數
break;
default:
//調用默認函數
break;
}
}
}
public void enter()
{
//……比如計算某值
}
?
方法五 直接用XHtmlRequest, client callback, javascript訪問Web Service或WebMethod.
以訪問WebMethod為例:
1、ScriptManager的EnablePageMethod必須為true.?
HTML code
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
? <Scripts>
? <asp:ScriptReference Path="~/Scripts/MyScript.js" />
? </Scripts> ?
</asp:ScriptManager>
2、服務器方法必須是static方法?
C# code
[System.Web.Services.WebMethod]
public static string[] GetStringArray(string s, int cnt)
{
? string[] stringArray = new string[cnt];
? Random rnd = new Random();
? for (int i = 0; i < cnt; i++)
? {
? stringArray[i] = string.Format("Random{0}: {1}-{2}",i, s, rnd.Next(cnt));
? }
? //throw new Exception("親愛的錯誤");
? System.Threading.Thread.Sleep(3000);
? return stringArray;
}
3、可以把script代碼放到.js文件里,如Scripts目錄下的MyScript.js內。?
JScript code
function CallWebMethod(prefix,count)
{
? $get('result').innerText = "請稍侯...";
? PageMethods.GetStringArray(prefix, count, OnSuccess, OnFailed);
? return false;
}
function OnSuccess(stringArray)
{
? var s = "";
? for(var i = 0; i < stringArray.length; i++)
? {
? s += stringArray[i] + "\n";
? }
? ?
? $get('result').innerText = s;
}
function OnFailed(error, userContext, methodName)
{
? if(error != null)
? {
? alert("發生了親愛的錯誤:" + error.get_message());
? }
}
//.aspx?
HTML code
<form id="form1" runat="server">
? <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
? <Scripts>
? <asp:ScriptReference Path="~/Scripts/MyScript.js" />
? </Scripts> ?
? </asp:ScriptManager>
? <div>
? <asp:Label ID="LabelPrefix" AssociatedControlID="TextBoxPrefix" runat="server" Text="string prefix: "></asp:Label>
? <asp:TextBox ID="TextBoxPrefix" runat="server"></asp:TextBox>
? <asp:Label ID="LabelCnt" AssociatedControlID="TextBoxCnt" runat="server" Text="count: "></asp:Label>
? <asp:TextBox ID="TextBoxCnt" runat="server"></asp:TextBox>
? <cc1:FilteredTextBoxExtender
? ID="FilteredTextBoxExtenderCnt" runat="server"
? TargetControlID="TextBoxCnt"
? ValidChars="1234567890"
? >
? </cc1:FilteredTextBoxExtender>
? <input id="Button1" type="button" value="button" TextBoxPrefix.ClientID %>').value,$get('<%= TextBoxCnt.ClientID %>').value)" />
? </div>
? <div id="result" style="border:solid 1px Maroon; margin: 10px; padding;5px;">
? </div>
</form>
轉載于:https://blog.51cto.com/saint/410000
總結
以上是生活随笔為你收集整理的js 调用服务器端方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怀孕梦到青蛇是什么意思
- 下一篇: java的classpath