将值传递给var中的函数后面的代码

时间:2015-04-10 11:12:36

标签: javascript jquery asp.net

我正在尝试将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

看起来我正在尝试传递的值没有权限被访问!任何想法如何解决这个问题?

4 个答案:

答案 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)

您可以将服务器端功能设置为页面方法。以下答案可能有所帮助:

https://stackoverflow.com/a/27081733/4773711