возвращение другого объекта javascript из контроллера - PullRequest
0 голосов
/ 12 декабря 2011

действие моего контроллера:

 [HttpPost]
    public ActionResult AddPointAndCopyOtherSongToPlaylist(int id)
    {   
        if (CheckIfAddPointToSelf(User.Identity.Name, id))
        {
            var song = repository.GetSong(id);
            foreach (var item in song.Points)
            {
                if (User.Identity.Name == item.UsernameGavePoint)
                {
                   var data1 = 1;


                    return Json(new {data1}, JsonRequestBehavior.AllowGet);
                }

            }
            var originalSong = repository.GetSong(id);
            var newSong = new Song();
            newSong.UserName = User.Identity.Name;
            newSong.Title = originalSong.Title;
            newSong.YoutubeLink = originalSong.YoutubeLink;
            newSong.GenreId = 38;
            newSong.Date = DateTime.Now;

            repository.AddSong(newSong);

            var point = new Point();
            point.UsernameGotPoint = originalSong.UserName;
            point.UsernameGavePoint = User.Identity.Name;
            point.Date = DateTime.Now;
            point.Score = 1;
            point.OtherSongId = id;
            repository.AddPoint(point);
            repository.Save();

           int data = 2;
            //process here
            return Json(new { data }, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return null;

        }
    }

на основе разных сценариев. Я хочу вернуть javascript и каким-то образом уведомить клиента о том, что было возвращено, и на основании результата сделать что-то в успешной части моего вызова ajax:

  $.ajax({
            beforeSend: function () { ShowAjaxLoader(); },
            url: "/Home/AddPointAndCopyOtherSongToPlaylist/",
            type: "POST",
            data: { id: songId },
            success: function (data,one) {

                if (data && !one) {
                    HideAjaxLoader(), ShowMsg("Song Added Successfully");
                }
                else if(!data) {
                    HideAjaxLoader(), ShowMsg("you cannot add your own songs");
                }
                else if (data && one) {
                    HideAjaxLoader(), ShowMsg("You cannot add the same song twice");
                }
            },
            error: function () { HideAjaxLoader(), ShowMsg("Song could not be added, please try again") }
        });
    });

Я пробовал много разных вариантов, но я думаю, что мне нужно что-то вроде data.property1 и в клиенте, чтобы проверить, существует ли это свойство или что-то подобное .., пожалуйста, помогите

1 Ответ

1 голос
/ 12 декабря 2011

Вам необходимо вернуть свой код состояния внутри объекта.

return Json( new { data1 = "Some Other Data", status = 1} );

Затем в вашем обработчике успеха проверьте data.status.

if (data.status === 1) {
     alert(data.data1);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...