我的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。
我该如何解决这个问题?
答案 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>