所以我只是试图将数据发布到带有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"];
}
}
这是发布到的页面,但当我查看控制台时,它会显示(取消)并且错误功能会弹出警报。
感谢您的帮助:)谢谢
答案 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);
}
}