我是AJAX的新手,我不明白,为什么我的数据没有发送到控制器。 因此,在我的视图中,我有两个输入表单和一个按钮:
<input type="text" name="AddName">
<input type="text" name="AddEmail">
<button class="btn btn-mini btn-primary" type="button" name="add_btn" onclick="DbAdd()">Add</button>
我需要在点击“add_btn”按钮后从这两个输入中获取数据并将它们发送到控制器。
<script type="text/javascript">
function DbAdd()
{
// Get some values from elements on the page:
var $form = $(this),
addedName = $form.find("input[name='AddName']").val(),
addedEmail = $form.find("input[name='AddEmail']").val();
$("#UserTable").html("<div>Please Wait...</div>");
$.ajax(
{
type: "POST",
url: "Save",
data:
{
name: addedName, email: addedEmail,
},
dataType: "json",
contentType: "application/json; charset=utf-8",
success: OnSuccess,
error: OnError
});
}
这是我的控制器方法“保存”(我需要保存从ajax到我的数据库的数据):
[HttpPost]
public ActionResult Save(User userinfo)
{
string message = "";
using (var uc = new UserContext())
{
uc.UserList.Add(userinfo);
uc.SaveChanges();
message = "Successfully Saved!";
}
if (Request.IsAjaxRequest())
{
return new JsonResult { Data = message };
}
else
{
ViewBag.Message = message;
return View(userinfo);
}
}
问题在于,当我给控制器的方法设置一个断点时,我不会从ajax接收数据,只有null。所以我向DB添加一个空记录。 有什么建议吗?
答案 0 :(得分:3)
看起来$form.find("input[name='AddName']").val()
和$form.find("input[name='AddEmail']").val()
都返回null。您应该使用$("input[name='AddName']").val()
和$("input[name='AddEmail']").val()
代替。将DbAdd()
的定义更改为
<script type="text/javascript">
function DbAdd()
{
// Get some values from elements on the page:
var addedName = $("input[name='AddName']").val(),
addedEmail = $("input[name='AddEmail']").val();
var user = { Name: addedName, Email: addedEmail };
$("#UserTable").html("<div>Please Wait...</div>");
$.ajax(
{
type: "POST",
url: "Save",
data: JSON.stringify({ userinfo: user }),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: OnSuccess,
error: OnError
});
}
</script>
答案 1 :(得分:0)
有一个额外的逗号可能导致语法错误:
data:
{
name: addedName, email: addedEmail, //<------------ here
}
并传递这样的数据:
var userinfo = { name: addedName, email: addedEmail };
data: JSON.stringify(userinfo)