从控制器返回不同的javascript对象

时间:2011-12-12 16:05:19

标签: asp.net-mvc-3 jquery

我的控制器动作:

 [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 个答案:

答案 0 :(得分:1)

您需要在对象中返回状态代码。

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

然后在您的成功处理程序中检查data.status。

if (data.status === 1) {
     alert(data.data1);
}