从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有关。
我该如何解决这个问题?
答
与您的代码的问题是,你正在一个阿贾克斯呼叫,但没有设置任何回调读取来自服务器的响应。您需要定义一个回调函数(以及可选的失败函数)来设置您要对响应执行的操作。
所以你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将能够建议ü服务器的方法。
当您运行应用程序时,您是否收到任何错误消息? –
没有错误,但行“PageMethods.VBFunctionName(variable);”不调用函数。当我开始键入PageMet ...并尝试使用CTRL +空格来选择PageMethods函数时,该函数不可用。 – Developer1903
在浏览器的控制台中是否有任何错误方法?你是否将ScriptManager标签包含在页面_before_你的javascript函数中? – ADyson