我正在尝试在我的视图中使用ajax来更新用户配置文件中的更改。不幸的是,无论我尝试什么,我收到错误消息“错误!!!”。我认为问题是我的模型,我试图自定义它,但它仍然不起作用。
这是用户按下“保存”按钮时执行的JS:
$(document.getElementById('save')).on("click", function() {
var liSportMotives = $('#sortable li').map(function(i, n) {
return $(n).attr('id');
}).get();
var liActivities = $('#myCarousel div').map(function(i, n) {
if ($(n).hasClass('thumbnailActive')) {
return $(n).attr('id');
}
}).get();
var myPostJSONObject = {
Weight : parseFloat($(document.getElementById('weightrange')).val()).toFixed(1),
Height : parseFloat($(document.getElementById('heightrange')).val()).toFixed(2),
IsSportsBeginnerPractise : $("input:radio[name='IsSportsBeginnerPractise']:checked").val(),
IsSportsBeginnerKnowledge : $("input:radio[name='IsSportsBeginnerKnowledge']:checked").val(),
IsNutritionBeginnerPractise : $("input:radio[name='IsNutritionBeginnerPractise']:checked").val(),
IsNutritionBeginnerKnowledge : $("input:radio[name='IsNutritionBeginnerKnowledge']:checked").val(),
NewSportMotives : liSportMotives,
NewActivities : liActivities
};
$.ajax({
url: '@Url.Action("ManageConfirmation", "Account")',
type: "POST",
traditional: true,
data: JSON.stringify(myPostJSONObject),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert("Success!");
},
error: function () {
alert("Error!!!");
}
});
});
我的控制器中的模型如下所示:
public class ManageUserDetails
{
public decimal Height { get; set; }
public decimal Weight { get; set; }
public bool IsSportsBeginnerPractise { get; set; }
public bool IsSportsBeginnerKnowledge { get; set; }
public bool IsNutritionBeginnerPractise { get; set; }
public bool IsNutritionBeginnerKnowledge { get; set; }
public String[] NewSportMotives { get; set; }
public String[] NewActivities { get; set; }
}
我有一个看起来像这样的动作:
public ActionResult ManageConfirmation(ManageUserDetails model)
{
return RedirectToAction("Index", "Home");
}
答案 0 :(得分:0)
由于action
,您的return RedirectToAction("Index", "Home");
正在尝试重定向。
这会导致一些意想不到的问题。
你可以试试这个:
[HttpPost]
public JsonResult ManageConfirmation(ManageUserDetails model)
{
//do stuff e.g. save model.
return Json(new { data = "some data to send back" }, JsonRequestBehavior.AllowGet);
}
答案 1 :(得分:0)
您不应该重定向到Ajax调用中的任何一个。 而是使用以下内容:
public ActionResult ManageConfirmation(ManageUserDetails model)
{
return Json(new { data = "true" }, JsonRequestBehavior.AllowGet);
}
并在Ajax调用中:
$.ajax({
url: '@Url.Action("ManageConfirmation", "Account")',
type: "POST",
traditional: true,
data: JSON.stringify(myPostJSONObject),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
window.location.href = '@Url.Action("Index","Home")';
alert("Success!");
},
error: function () {
alert("Error!!!");
}
});
查看成功方法。