2017-01-30 201 views
0

我在我的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

回答

0

與您的代碼的問題是,你正在一個阿賈克斯呼叫,但沒有設置任何回調讀取來自服務器的響應。您需要定義一個回調函數(以及可選的失敗函數)來設置您要對響應執行的操作。

所以你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將能夠建議ü服務器的方法。