我不知道我做错了什么,但是通过更新到更新版本的jQuery,我的ajax页面不再起作用了。
我使用的是谷歌CDN的1.8.3,现在我正在尝试使用1.9.1。我还从谷歌CDN更新了jQuery UI到1.9.2。最后,我为我的页面采用了最新的“jquery.unobtrusive-ajax.min.js”。
我的网站上的一切正常,除了我在页面上使用ajax调用替换div的页面。这个页面工作得很好但是现在当用户点击提交时,它只是加载到另一个页面。
Here is a jsfiddle简化了我的网页。我不知道如何在jsfiddle中调用一个可以返回简单html的“假控制器”,所以如果你想要修改它。通过单击按钮,它应该用相同的GUID替换div。使用MVC 3中的Ajax对象生成了Ajax调用。像这样:
using (Ajax.BeginForm("AddSubtitle", "Recipe",
new AjaxOptions
{
UpdateTargetId = superGuid,
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
OnSuccess = "done"
}))
{
<input type="hidden" name="IDRecipe" value="@Model.IDRecipe" />
<a name="SubtitleSection" ></a>
<input class="field required span6 text-box single-line" name="Name" />
<input type="submit" class="btn btn-success" value="Ajouter une catégorie d'ingrédient" />
}
我的控制器似乎运行得很好,因为在打开内容的新页面中是完美的。在这里,你可以拥有所有的拼图。
[HttpPost]
[Authorize]
public PartialViewResult AddSubtitle(Subtitle sub)
{
Recipe realRecipe = db.Recipes.Find(sub.IDRecipe);
if ((Guid)Membership.GetUser().ProviderUserKey == realRecipe.IDUser || User.IsInRole("Admin"))
{
sub.Order = realRecipe.Subtitles.Count + 1;
if (sub.Name != null && sub.Name != "")
{
realRecipe.Subtitles.Add(sub);
db.SaveChanges();
}
else
ModelState.AddModelError("", "Le nom de la catégorie ne peut pas être vide!");
return PartialView("_SubtitleList", Utils.GetListIngredientAndSubtitle(realRecipe.IDRecipe, realRecipe.Subtitles));
}
else
return PartialView("_SubtitleList", null);
}
任何人都可以帮我这个吗?
答案 0 :(得分:1)
正确的页面表现得好像没有ajax,因为Unobtrusive失败了。确保您更新 Microsoft.jQuery.Unobtrusive.Ajax 的版本 - 旧版本使用上述不推荐使用的.live()方法,但新版本使用.on()更新
安装:
PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax
Project site。最新版本2.0.30506.0适用于我的jQuery 1.9.1。 来自http://docs.nuget.org/的文档的其他NuGet帮助。