事实上这是简单的情况,但我找不到解决方案:我需要通过jQuery ajax将JSON字符串传递给我的MVC控制器,但Controller总是收到null。 这是jQuery:
$("#makebooking").click(function (e) {
var json;
if ($("form").valid()) {
var arr = $("form").serializeArray();
json = JSON.stringify({ 'command': arr });
}
$.ajax({
url: "@Url.Content("~/Booking/CreateBooking")",
data: json,
type: "post",
cache: false,
dataType: "json",
success: function (result) {
if (result != null) {
window.location = result;
} else {
$("#modalerror").on("show.bs.modal", function () {
var modal = $(this);
modal.find("#errormsg").text(result.Error);
});
}
},
error: function (xhr) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
});
控制器代码在这里:
[HttpPost]
public JsonResult CreateBooking(string command)
{
byte[] stream = HttpServerUtility.UrlTokenDecode(Request.Cookies["psw"].Value);
byte[] decodedValue = MachineKey.Unprotect(stream, "all");
var psw = Encoding.UTF8.GetString(decodedValue);
var a = _br.CreateBooking(User.Identity.Name, psw, command);
return Json(a);
}
我希望有人可以重新审视此代码并提供解决方案建议。感谢。
答案 0 :(得分:1)
POST方法的参数为string
,但您回发json
。
将方法更改为
[HttpPost]
public JsonResult CreateBooking(YourModel model)
和脚本
if ($("form").valid()) {
var json = $('form').serialize(); // serialize the form values to json
$.ajax({
url: '@Url.Action("CreateBooking", "CreateBooking")', // recommended
data: json,
....
您的模型将在POST方法中正确绑定
答案 1 :(得分:0)
我不确定这是否是你问题的全部内容,但看起来你的ajax调用中的url引号有问题。尝试将单引号与双引号混合使用,例如
url: "@Url.Content('~/Booking/CreateBooking')"