Jquery Ajax方法没有调用codebehind asp.net方法

时间:2015-08-19 02:34:11

标签: c# jquery asp.net ajax

Jquery代码:

<script type="text/javascript">
$(document).ready(function () {
$("#frmReg").on('submit', function (e) {
var emailAddr = $("#inputEmail").val();
            var userName = $("#userName").val();
            var password = $("#inputPassword").val();
            var FormData = {
                Email: emailAddr,
                UserName: userName,
                Password: password
            };
            var dd = JSON.stringify(FormData);
            $.ajax(
                {
                    type: "POST",
                    url: "Register.aspx/EmailAvailability",
                    contentType: "application/json; charset=utf-8",
                    data: '{"formData":'+ dd+ ' }',
                    dataType: "json",
                    success: function (data) {
                        alert("Entered");
                    },
                    fail: function () {
                        alert("failure");
                    }
                });
        });
    });
</script>

Ajax CodeBehind文件: 这是Asp.net方法。

public static bool EmailAvailability(string formData)
{
    return true;
}

1 个答案:

答案 0 :(得分:1)

这里有错误。 你已经使dd看起来像Json,使用JSON.stringify!

data: '{"formData":'+ dd+ ' }',

这应该是:

data: dd,

如果你想成为一个项目数组,那么你的dd对象可以像这样完成:

var uData = [];
uData[0] = emailAddr;
uData[1] = userName;
uData[2] = password;

var dd = JSON.stringify(uData: uData);

现在您的Web服务方法将如下所示 EmailAvailability(List<string> uData)

如果您想将它们作为单独的参数:

 var dd = JSON.stringify(emailAddr: emailAddr, userName: userName, password: password);

在这种情况下,您的网络服务方法将类似于EmailAvailability(string emailAddr, string userName, string password)

不要忘记data: dd

P.S:我也没有在示例中看到后面的代码中的属性[WebMethod]不要忘记它!

 [WebMethod]
 public static bool EmailAvailability(string formData)
 {
     return true;
 }