asp.net剃刀页面webmatrix ajax帖子将无法正常工作

时间:2014-02-02 19:52:55

标签: jquery asp.net ajax razor webmatrix

所以我只是试图将数据发布到带有ajax的页面..但它不起作用..任何想法?

                $.ajax({
                url: '/REST/GetResponse.cshtml',
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify({
                    username: $('#username').val(),
                    firstname: $('#firstname').val(),
                    lastname: $('#lastname').val(),
                    email: $('#email').val(),
                    password1: $('#password1').val(),
                    password2: $('#password2').val(),
                }),
                success: function (result) {
                    alert("success " + result.UserName);
                },
                error: function (result) {
                    alert("Failed");
                }

            });
        }

这是我的ajax帖子 -

@{
if (IsPost)
{
    var password = Request["password1"];
    var username = Request["username"];
}

}

这是发布到的页面,但当我查看控制台时,它会显示(取消)并且错误功能会弹出警报。

感谢您的帮助:)谢谢

2 个答案:

答案 0 :(得分:2)

ASP.Net网页通常希望POST请求以application/x-www-form-urlencoded而不是JSON发送。只需将contentType设置为该值(或者根本不设置它,因为这是默认设置)并取消JSON.stringify()调用。 jQuery会自动为你做编码。

答案 1 :(得分:1)

最适合您的方法是将表单序列化并提交。如果您的表单ID是“userdata”,那么您的Ajax帖子应为:

$.ajax({
    url: '/REST/GetResponse.cshtml',
    type: "POST",
    dataType: "text",
    data: $("#userdata").serialize(),
    success: function (result) {
        alert("success " + result);
    },
    error: function () {
        alert("Failed");
    }
};

和/REST/GetResponse.cshtml文件类似:

@{
    var password = Request["password1"];
    var username = Request["username"];
    // and so on ...

    try 
    {
        // do something...
        Response.Write(username);
    }
    catch (Exception ex)
    {
        Response.StatusCode = 500;
        Response.Write(ex.Message);
    }
}


相反,如果你想保留原来的Ajax帖子,我认为你的/REST/GetResponse.cshtml应该是:

@{
    string input;
    using(var reader = new StreamReader(Request.InputStream)){
      input = reader.ReadToEnd();
    }
    var user = Json.Decode(input);
    var password = user.password1;
    var username = user.username;
    // and so on ...

    try 
    {
        // do something...
        Response.Write(username);
    }
    catch (Exception ex)
    {
        Response.StatusCode = 500;
        Response.Write(ex.Message);
    }
}