我正在尝试创建一个jQuery .ajax程序,其中用户单击视图中的按钮,触发$ .ajax,然后发送名称到控制器,控制器在名称前面添加hello并发回json响应。
我设法从控制器接收JSON响应,但未能在控制器中读取发布数据name
。
这是我的代码:
public JsonResult processJsonRequest(PersonModel model)
{
string returnString = "Hello , receive JSON data" + model.Name;
return Json(returnString, JsonRequestBehavior.AllowGet);
}
public class PersonModel
{
public string Name { get; set; }
}
@{
ViewBag.Title = "Index";}
@Scripts.Render("~/bundles/jquery")
@using (Html.BeginForm())
{
<input type="button" id="b1" value ="Press Me" />
}
<script type="text/javascript">
$(document).ready(function () {
$("#b1").click(function () {
var person = { Name: 'khurram' };
$.ajax({
type: "POST",
url: "/JSON_Ajax_03/processJsonRequest",
data: JSON.stringify(person),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
alert(response);
}
});
});
});
</script>
答案 0 :(得分:4)
而不是:
JSON.stringify(person)
这样做:
JSON.stringify({ model: person });
问题是您没有正确命名模型参数。