我对 ajax 不是很好,但要使用我的一个 jquery 插件,我必须在 ajax 中做一些调用。问题是它总是在函数的错误处理中,我不知道为什么。由于我使用的是 Visual Web Developper Express,因此 JavaScript 调试不起作用。
这是jquery函数:
$('.auto-submit-star').rating({
callback: function (value, link) {
$.ajax({
type: "POST",
url: "/Recipe/Rate",
data: $("#rate").serialize(),
dataType: "text/plain",
success: function (response) {
if (response != 'false') {
alert('Your vote has been saved');
} else {
alert('You already voted for this recipe!');
}
},
error: function (response) {
alert('There is an error');
}
});
}
});
然后,它进入控制器。我已经调试了这部分并且它可以工作,它将好的值保存在数据库中,然后根据用户是否已经投票返回“false”或“”。
这是代码:
[HttpPost]
[Authorize]
public ActionResult Rate(FormCollection form)
{
var rate = Convert.ToInt32(form["Score"]);
var id = Convert.ToInt32(form["IDRecipe"]);
//On valide si l'utilisateur a déja voté
Guid userGuid = (Guid)Membership.GetUser().ProviderUserKey;
var existingVote = db.StarRatings.Where(a => a.IDRecipe == id).Where(b => b.IDUser == userGuid).FirstOrDefault();
if (existingVote != null)
return Content("false");
StarRating rating = new StarRating();
rating.IDRecipe = id;
rating.IDUser = (Guid)Membership.GetUser().ProviderUserKey;
rating.Score = rate;
var recipe = db.Recipes.Where(a => a.IDRecipe == id).First();
recipe.StarRatings.Add(rating);
db.SaveChanges();
return Content("");
}
任何人都可以告诉我为什么我总是收到“有错误”的消息,而它从来没有进入 ajax 调用的“成功”部分?我需要在控制器中返回一些特殊的东西吗?
编辑
这是 Internet Explorer 调试器中响应变量的屏幕截图,其中一条评论让我发现。
谢谢!