3

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

谢谢

4

4 回答 4

0

尝试使用

 function OnSucceeded() {
        alert(msg.d);
    }

编辑-1

请通过此链接
如何使用 ScriptManager 调用特定的类方法

于 2013-03-13T11:51:09.107 回答
0
    function SendForm() {
        var msg;
        msg = PageMethods.SendForm(function (result) {
            alert(result);
        }, function (error) {
            alert(error);
        });
    }

这应该有效。

如果从 SendForm 方法抛出异常,它会自动转到错误方法。

[WebMethod]
public static string  SendForm()
{
    throw new Exception("Error");

    string message = "hello world";
    return message;
}
于 2013-03-13T11:56:39.883 回答
0

那不是您接收消息的方式。

像这样做

   function SendForm() {
        PageMethods.SendForm(OnSucceeded, OnFailed);

        function OnSucceeded(msg) {
            alert(msg);
        }

        function OnFailed(error) {
            // Alert user to the error.
            alert("failed");
        }
    }

您的成功函数将接收函数调用的结果作为参数。

于 2013-03-13T11:59:28.443 回答
0

我不确定您使用的是哪个版本的 .Net 框架,但如果它是 3.5,那么您可能需要查看以下链接:

http://encosia.com/a-break-change-between-versions-of-aspnet-ajax/

在 asp.net 3.5 及以后版本中,响应包含在 .d 中。

于 2013-03-13T12:07:12.980 回答