3

我正在尝试ActionResult根据从返回的结果调用和更新页面上 img 的值Action,但由于某种原因,我发布到仅打印字符串的新页面

   public ActionResult Favorite(int? id)
    {
        int PId = Convert.ToInt32(pid);
        if (MyDb.CheckExist(Convert.ToInt32(User.Identity.Name),PId))
        {
            var UF = MyDb.GetExist( Convert.ToInt32(User.Identity.Name),PId);
            MyDb.Delete(UF);
            MyDb.Save();
            return Json(new { Url= "/Content/oldimage.png" }, JsonRequestBehavior.AllowGet);
        }

        else
        {
            UFs UF = new UFs();
            UF.Id = PId;
            UF.UserId = Convert.ToInt32(User.Identity.Name);
            UF.CreatedDate = DateTime.Now;
            MyDb.Add(UF);
            MyDb.Save();
            return Json(new {  Url= "/Content/newimage.png"}, JsonRequestBehavior.AllowGet);//return favorite image
        }

    }

我调用我的 ajax 的锚标记

   <a href='<%= Url.Action("Favorite","Home", new { id = item.Id })%>' class="Image" style="text-decoration:none">
            <img src="/Content/Images/oldimage.png" alt="FavoriteImage" style="height:25px;width:30px"  id="favorite<%:item.Id %>" class="ImageTag" /></a>


  $('.Image').click(function () {

        var id = this.children('.ImageTag').attr('id');
        $.ajax({
            url: this.href,
            type: 'POST',
            dataType: "json",
            success: function (data) {
                 $('#' + id).attr('src', data.Url);

            },
            error: function (xhr, ajaxOptions, thrownError) {
                $.unblockUI();
            }
        });
        return false;
    });

发生的情况是服务器上的操作被命中,但页面发布到主页/收藏夹,显示返回的 Json。主页/收藏夹甚至不是视图。

4

1 回答 1

1

您应该阻止默认行为,该链接正在对收藏夹 发出新请求,Action刷新整个页面,并获取 JSON 作为响应。

$('.Image').click(function(event) {
  event.preventDefault();

  //do stuff here

});
于 2013-08-09T01:49:54.590 回答