2

我不知道我做错了什么,但是通过更新到更新版本的 jQuery,我的 ajax 页面不再工作了。

我使用的是来自 google CDN 的 1.8.3,现在我正在尝试使用 1.9.1。我还从 google CDN 将 jQuery UI 更新到了 1.9.2。最后,我为我的页面采用了最新的“jquery.unobtrusive-ajax.min.js”。

在我的网站上一切正常,除了我使用 ajax 调用替换我页面上的 div 的页面。该页面运行良好,但现在当用户单击提交时,它只是加载到另一个页面。

这是一个大大简化我的页面的jsfiddle。我不知道如何在 jsfiddle 中调用可以返回简单 html 的“假控制器”,因此如果需要,请对其进行修改。通过单击按钮,它应该用相同的 GUID 替换 div。Ajax 调用是使用 MVC 3 中的 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);
}

任何人都可以帮助我吗?

4

1 回答 1

1

对,你的页面表现得好像没有 ajax,因为 Unobtrusive 失败了。确保更新Microsoft.jQuery.Unobtrusive.Ajax的版本- 旧版本使用上述已弃用的 .live() 方法,但新版本使用 .on() 更新

安装:

PM> Install-Package Microsoft.jQuery.Unobtrusive.Ajax

项目现场。最新版本 2.0.30506.0 对我来说与 jQuery 1.9.1 配合得很好。来自http://docs.nuget.org/文档的其他 NuGet 帮助。

于 2013-05-25T14:22:17.867 回答