Страницы бритвы asp.net webmatrix ajax сообщение не будет работать

Так что я просто пытаюсь опубликовать данные на странице с помощью 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 ответа

Веб-страницы ASP.Net обычно ожидают POST запросы будут отправлены как application/x-www-form-urlencoded а не JSON. Просто установите contentType к этому (или не устанавливайте его вообще, так как это по умолчанию) и избавьтесь от JSON.stringify() вызов. JQuery автоматически сделает кодировку для вас.

Лучший вариант для вас - сериализовать форму и отправить ее. Если идентификатор вашей формы "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);
    }
}
Другие вопросы по тегам