Страницы бритвы 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);
}
}