从javascript调用VB函数

问题描述:

我在我的asp文件中有一个javascript,我想从中调用vb函数。从javascript调用VB函数

天冬氨酸javascript函数:在VB

<script type="text/javascript"> 
    function functionName(sender, args) { 
     var variable = args.get_value(); 
     PageMethods.VBFunctionName(variable); 
    } 
</script> 

功能:

<System.Web.Services.WebMethod()> 
Public Shared Function VBFunctionName(variable As String) As String 
    Dim result As String = variable 
    Return result.ToString() 
End Function 

而且,我还增加了使用ScriptManager启用页面方法:

<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="True"></asp:ScriptManager> 

但是,它是不工作!在asp文件中,当我输入'PageMethods'时,此选项的自动完成功能不可用。所以,我认为错误与EnablePageMethods有关。

我该如何解决这个问题?

+1

当您运行应用程序时,您是否收到任何错误消息? –

+0

没有错误,但行“PageMethods.VBFunctionName(variable);”不调用函数。当我开始键入PageMet ...并尝试使用CTRL +空格来选择PageMethods函数时,该函数不可用。 – Developer1903

+0

在浏览器的控制台中是否有任何错误方法?你是否将ScriptManager标签包含在页面_before_你的javascript函数中? – ADyson

与您的代码的问题是,你正在一个阿贾克斯呼叫,但没有设置任何回调读取来自服务器的响应。您需要定义一个回调函数(以及可选的失败函数)来设置您要对响应执行的操作。

所以你script标签应该是这样的: -

<script type="text/javascript"> 
    function functionName(sender, args) { 
     var variable = args.get_value(); 
     PageMethods.VBFunctionName(variable,onSuccess); //pass callback function 
    } 
    function onSuccess(response) { 
     alert(response); //Do whatever you wanna do with response. 
    } 
</script> 

此外,由于我们的javascript脚本标签中工作,我不认为Visual Studio将能够建议ü服务器的方法。