我正在使用jquery 1.8将数据发布到ASP.Net 4 MVC 2,就像这样
PostData('Home/Login',{ "username": $("#username").val(),"password": $("#password").val()})
function PostData(url, data) {
$.ajax({
url: url,
data:data,
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
Success:successFunction, Error: ErrorFunction
});
};
我的模特
namespace FmsMvc.Models
{
public class UsersModel
{
public int UserID { get; set; }
public string Role { get; set; }
public string Email { get; set; }
public DateTime ts { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
}
我的控制器
[HttpPost]
public JsonResult Login(UsersModel u)
{
if (doSomething(Prop1, Prop2)
return Json(null); // Success
return Json(new { Status:'success',Msg:" Your username"+u.username });
}
我的控制器无法获取数据。它在调试时变为null。
我做错了什么?
注意
我删除了Scripts文件夹中的所有javascript,因为我使用的是自定义脚本
答案 0 :(得分:1)
你在POST之前尝试过JSON.stringify吗?
function PostData(url, data) {
$.ajax({
url: url,
data:JSON.stringify(data),
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
Success:successFunction, Error: ErrorFunction
});
};
答案 1 :(得分:1)
试试这样:
var data = { "username": $("#username").val(),
"password": $("#password").val()
};
PostData('Home/Login',JSON.stringify(data));
答案 2 :(得分:1)
您可以使用JQuery .post()
方法为您解析值
var url = '@Url.Action("Login", "Home")'; // beter to use this rather than hardcoding
var userName = `$("#username").val();
var password = $("#password").val();
$.post(url, { Username: userName, Password: password }, function(result) {
// do something with the result you returned from the action method
alert(result.Msg);
});
注意,只会在模型中设置属性Username
和Password
。其他属性将是其默认值。
答案 3 :(得分:0)
经过多次调试,我找到了罪魁祸首
在上面我的ajax函数中我有这两行
contentType: 'application/json; charset=utf-8',
dataType:'json',
不知何故,这不应该。当我提交带有两条线的表格时,这就是我在chrome dev中看到的
但是当我删除行contentType: 'application/json; charset=utf-8'
时,现在$ .ajax
$.ajax({ // create an AJAX call...
type: 'post', // GET or POST
url: url, // the file to call
dataType:'json',
data: data, // get the form data
Success:successFunction, Error: ErrorFunction
});
当我在提交后查看chrome dev时,我看到了这个,之前不存在
我不知道为什么会这样,我会尝试在其他浏览器中查看是否一切正常