![](/img/trans.png)
[英]How to call code behind server method from a client side JavaScript function?
[英]how to call javascript client side function from code behind file
我將如何從后面的代碼在aspx頁面中調用showItems()函數。
<script>
function getItems(){
var items = [];
return items; //items=['a','b','c']
}
<form id="form1" runat="server">
<asp:Hiddenfield id="HiddenField1" runat="server"></asp:hiddenfield>
</form>
后面的代碼:
ScriptManager.RegisterStartupScript(this, GetType(), "items", "<script type='text/javascript'>getItems()</script>", false);
這里有幾件事...
首先 ,您不要“從服務器端代碼調用客戶端函數”。 您可以做的是包括一些客戶端代碼,這些代碼本身將稱為函數“客戶端”。 這似乎是您在做什么,但我只想確保您了解其中的區別。
其次 ,您的函數稱為showItems
,但您正在調用名為getItems
的函數:
<script type='text/javascript'>getItems()</script>
而是調用showItems()
? 像這樣?:
ScriptManager.RegisterStartupScript(this, GetType(), "items", "<script type='text/javascript'>showItems()</script>", false);
第三 , showItems
函數返回一些信息。 但是,您實際上並沒有為該結果做任何事情 。 您只是在調用該函數而忽略結果。 因此,目前尚不清楚您要完成什么。
像這樣:
Page.ClientScript.RegisterStartupScript(GetType(), "key", "showItems();", true);
編輯 :要獲取C#代碼后面的javascript返回值,請使用javascript代碼將值分配給隱藏的控件。 然后,您可以使用C#代碼訪問“隱藏”控制值。 看一下這篇文章。 例如:
<script type="text/javascript">
function showItems() {
var items = new Array(3);
items[0] = "name1";
items[1] = "name2";
items[2] = "name3";
items[3] = "name4";
document.getElementById('<%=HiddenField1.ClientID%>').value = items.join(',');
}
</script>
並在后面的代碼中:
string[] itemArr = HiddenField1.Value.Split(",".ToCharArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.