从javascript调用VB函数

时间:2017-01-30 13:07:01

标签: asp.net vb.net

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

Asp javascript功能:

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

VB中的函数:

<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文件中,当我输入&#39; PageMethods&#39;此选项的自动填充功能无法使用。所以,我认为错误在于EnablePageMethods。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您的代码的问题在于您正在进行 Ajax 调用,但未设置任何回调以从服务器读取响应。您需要定义一个回调函数(以及可选的失败函数)来设置您要对响应做什么。

因此,您的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能够建议您使用服务器方法。

答案 1 :(得分:0)

我更喜欢使用JQuery从javascript调用VB函数。

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

      $.get( "@Url.Action("VBFunctionName")?variable=" + variable, function( data ) {
         alert(data);
      });
   }
</script>