2013-08-09 3 views
3

Я пытаюсь вызвать ActionResult и обновить значение img на странице на основе возвращаемого результата из Action, но по какой-то причине я отправляю на новую страницу, которая просто печатает строкуОбратный текст JSON

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 
     } 

    } 

мой якорь тег, который вызывает мой Аякса

<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; 
    }); 

и что происходит это действие на сервере хит, но посты страниц на Home/Favorite отображающих возвращенный JSon. Home/Favorite - это даже не представление.

+0

Почему у вашего изображения есть якорная метка, указывающая на/Home/Favorite? Посмотрите на HTML, созданный этим Url.Action. Избавьтесь от него, используйте '#'. –

+0

@IanMercer Почему у моего изображения есть якорный тег? Я использую href для вызова действия на стороне сервера в методе ajax. Разве я не вернул бы ложную остановку, чтобы не попасть в цель? – Jake

ответ

1

Вы должны изменить поведение по умолчанию, ссылка делает новый запрос для FavoriteAction обновления всей страницы, получая в ответ на JSON.

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

    //do stuff here 

}); 
+0

Вы были правы. Я думал, что ложное возвращение будет – Jake

Смежные вопросы