我在我的apx.cs文件中用C#编写了以下函数
[WebMethod]
public static string SendForm()
{
string message = "hello world";
return message;
}
当我的aspx文件中的脚本调用该函数时,我正试图显示消息(“hello world”)
<script>
function SendForm() {
var msg;
msg = PageMethods.SendForm(OnSucceeded, OnFailed);
function OnSucceeded() {
alert(msg);
}
function OnFailed(error) {
// Alert user to the error.
alert("failed");
}
}
</script>
<body>
<form id="Form1" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server"
EnablePageMethods="true" />
<fieldset id="ContactFieldset">
<input type="button" onclick="return SendForm()" value="send" />
</fieldset>
</form>
</body>
当我点击按钮发送时,我收到一条警告,其中包含“未定义”消息,因此我的var'msg'未定义,但如何将我的C#函数中的'hello world'放入msg var?
感谢
答案 0 :(得分:0)
尝试使用
function OnSucceeded() {
alert(msg.d);
}
请通过此链接
How do I call a particular class method using ScriptManager
答案 1 :(得分:0)
function SendForm() {
var msg;
msg = PageMethods.SendForm(function (result) {
alert(result);
}, function (error) {
alert(error);
});
}
这应该有效。
如果从SendForm方法抛出异常,它会自动转到error方法。
[WebMethod]
public static string SendForm()
{
throw new Exception("Error");
string message = "hello world";
return message;
}
答案 2 :(得分:0)
这不是你收到消息的方式。
这样做
function SendForm() {
PageMethods.SendForm(OnSucceeded, OnFailed);
function OnSucceeded(msg) {
alert(msg);
}
function OnFailed(error) {
// Alert user to the error.
alert("failed");
}
}
您的成功函数将接收函数调用的结果作为参数。
答案 3 :(得分:0)
我不确定您使用的是什么版本的.Net框架,但如果它是3.5,那么您可能需要查看以下链接:
http://encosia.com/a-breaking-change-between-versions-of-aspnet-ajax/
在asp.net 3.5以后,响应包含在.d中。