我正在尝试将pageIndex变量传递给javascript后面的代码。如果我传递任何硬编码值,代码都有效。但是,我无法使用var值来使用它。
pageIndex++;
var sPageIndex = pageIndex.toString;
document.getElementById('<%= Label1.ClientID %>').innerHTML = '<%= xDoSomething(sPageIndex)%>';
这有效:
document.getElementById('<%= Label1.ClientID %>').innerHTML = '<%= xDoSomething(123456)%>';
这是我功能背后的简单代码:
Public Shared Function xDoSomething(sPageIndex As String) As String
Dim ss As String = sPageIndex
Try
If ss.Length < 1 Then
ss = "smaller than one"
Else
ss = ss
End If
Return "from code behind [" & ss & "]"
Catch ex As Exception
Return ex.ToString
End Try
End Function
看起来我正在尝试传递的值没有权限被访问!任何想法如何解决这个问题?
答案 0 :(得分:1)
您需要了解服务器端和客户端之间的区别。目前,你以一种简单无法运作的方式混合两者。
pageIndex++;
var sPageIndex = pageIndex.toString;
document.getElementById('<%= Label1.ClientID %>').innerHTML = '<%= xDoSomething(sPageIndex)%>';
您在上述代码中尝试执行的操作是使用一个变量,该变量仅存在于客户端(即浏览器)上,作为服务器端代码的一部分(即在IIS服务器上) )。
在服务器sPageIndex
上不存在 - 它根本无法使用它,而在浏览器上更改它并不会产生丝毫的影响。
以下代码的工作原理是您在服务器本身上为函数提供值123456
。服务器能够使用123456
的值并生成您想要的字符串。
document.getElementById('<%= Label1.ClientID %>').innerHTML = '<%= xDoSomething(123456)%>';
如果您需要.innerHTML
基于客户端sPageIndex
变量,您需要将该变量的值发送到服务器(通过查询字符串或表单),以便它可以将其作为页面渲染的一部分进行处理...或者您可以查看类似AJAX的内容,它允许您在后台转到服务器,获取HTML并根据需要显示它。
答案 1 :(得分:0)
你想要传递的是一个字符串。 试试这个:
pageIndex++;
var sPageIndex = pageIndex;
document.getElementById('<%= Label1.ClientID %>').innerHTML = '<%= xDoSomething('+sPageIndex+')%>';
答案 2 :(得分:0)
你必须进行字符串连接。
pageIndex++;
var sPageIndex = pageIndex.toString;
document.getElementById('<%= Label1.ClientID %>').innerHTML = '<%= xDoSomething('+sPageIndex+')%>';
答案 3 :(得分:0)
您可以将服务器端功能设置为页面方法。以下答案可能有所帮助: