将JSON值传递给Web方法会返回“未知的Web方法DoesUserExist”。参数名称:methodName'错误

时间:2012-03-31 12:55:25

标签: c# jquery ajax json

嗨,这是我的javascript:

<script type="text/javascript">
    $(document).ready(function () {
        function validateEmail(email) {
            var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
            if (!emailReg.test(email)) {
                return false;
            } else {
                return true;
            }
        }

        $("#coreContent_mainContent_txtEmail").blur(function () {
            var email = $("#coreContent_mainContent_txtEmail").val();

            if (!validateEmail(email)) {
                $("#coreContent_mainContent_errorIconEmail").css("display", "block !important").fadeIn(200);
                $("#coreContent_mainContent_txtEmail").css("-webkit-box-shadow", "0 0 0 1px #2D2D2D, 0 0 0 2px #FF0000 !important").fadeIn(200);
                $("#coreContent_mainContent_txtEmail").val('');
            } else {
                $.ajax({
                    type: "POST",
                    url: "/Sign-Up.aspx/DoesUserExist",
                    data: "{'email': '" + email + "'}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        if (msg == "false") {
                            alert("Email Does Not Exist!");  
                        } else {
                            alert("Email Exist!");
                            $(this).css("display", "block !important").fadeIn(200);
                            $(this).css("-webkit-box-shadow", "0 0 0 1px #2D2D2D, 0 0 0 2px #FF0000 !important").fadeIn(200);
                            $(this).val = "";
                        }
                    }
                });
            }

        });
    });
</script> 

现在在ajax帖子中它给了我这个错误'未知的网络方法DoesUserExist。 参数名称:methodName'然而在我的代码后面的同一页面上是Sign-Up.aspx,方法'DoesUserExist'实际上就在那里,这就是代码:

[WebMethod]
    public static bool DoesUserExist(string email)
    {
        return false;
    }

目前为了测试目的,我只在上述方法中返回false。然而问题仍然存在,ajax调用无法找到web方法。关于如何解决这个问题的任何想法?

3 个答案:

答案 0 :(得分:3)

尝试添加[ScriptMethod] DoesUserExist:

[WebMethod]
[ScriptMethod]
public static bool DoesUserExist(string email)
{
    return false;
}

答案 1 :(得分:0)

确保您的AJAX帖子中的URL正确,我不确定您的层次结构,但可能不需要前导斜杠。这里有一篇很好的文章来设置测试页面:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

答案 2 :(得分:0)

我遇到了同样的问题。要修复它,你应该确保:

  • 在您的代码中,您的方法应该是静态的,并在其顶部添加注释[WebMethod]

[WebMethod] public static bool DoesUserExist(string email) { return false; }

  • 在jquery代码中,确保要传递给数据的参数选项应与参数方法名称匹配。它必须与您的方法签名相匹配。

    数据:&#34; {&#39;电子邮件&#39;:&#39;&#34; +电子邮件+&#34;&#39;}&#34;,