我正在尝试将数组变量传递给 javascript。
以下不起作用,知道为什么以及如何使其起作用吗?
背后代码
Public myArray (5) As String
myArray(1) = "A1"
myArray(2) = "A2"
myArray(3) = "A3"
myArray(4) = "A4"
myArray(5) = "A5"
在asp.net中
<button type = "button" onclick="myJava('<%= myArray %>');">Search</button>
在 JavaScript 中
function myJava (myArray) {
alert(myArray[1]); // expected answer is A1 but it is "y"
}
alert(myArray)
结果为 System.String[]
您需要正确编码您的数组。首先,需要将其转换为JSON字符串;那么您需要将该字符串编码为 HTML 属性值。
添加对 Newtonsoft.Json
NuGet 包的引用。为
Imports
命名空间添加
Newtonsoft.Json
语句。在代码隐藏中添加一个方法以返回正确编码的函数调用:
Public Function PassArrayToJavascript(ByVal functionName As String) As String
Dim json As String = JsonConvert.SerializeObject(myArray)
Dim result As String = functionName + "(" + json + ");"
Return System.Web.HttpUtility.HtmlAttributeEncode(result)
End Function
然后更新您的标记以调用此函数:
<button type = "button" onclick="<%= PassArrayToJavascript("myFunction") %>">Search</button>