JQuery Ajax方法不会将成功数据作为Array提交

时间:2014-03-28 04:19:03

标签: jquery ajax asp.net-mvc

我有Jquery Ajax函数从MVC控制器获取数据。 Ajax方法调用完美但不在正确的区域。在Ajax调用中成功方法之后命中控制器方法。 我将Array从控制器返回到ajax方法。但它没有用。当我成功设置警报时,它会弹出。我不能指定数组值来定义变量。 请帮我解决这个问题。

Jquery Ajax方法:

<script type="text/javascript">
        $(document).ready(function () {
            debugger;
            var austDay = new Date();
            var currDay = new Date();
            $.ajax({
                type: 'GET',
                url: '/Service/Utility/GetDownDate',
                success: function (countDownDetail) {
                    if (countDownDetail.Result.length > 0) {
                        austDay = countDownDetail.Result[0];
                        currDay = countDownDetail.Result[1];
                    }
                }
            });

            austDay = new Date(austDay, 1 - 1, 26);



            $('#defaultCountdown').countdown({ until: austDay });
            $('#year').text(austDay.getFullYear());
        });
</script>

这是MVC控制器方法:

public ActionResult GetDownDate()
    {
        string dtime = db.Maintanance.FirstOrDefault().Time;
        string[] time = dtime.Split(':');

        //int hours = db.Maintanance.FirstOrDefault().date.Hour+;
        DateTime downDate = db.Maintanance.FirstOrDefault().date;
        int minutes = db.Maintanance.FirstOrDefault().duration + Convert.ToInt32(time[1]);

        DateTime newDate = new DateTime(downDate.Year, downDate.Month, downDate.Day, Convert.ToInt32(time[0]), minutes, 0);
        DateTime currentDate = System.DateTime.Now;

        DateTime[] dateTimes = new DateTime[]
        {
            newDate,currentDate
        };

        return Json(new
        {
            Value = dateTimes

        }, JsonRequestBehavior.AllowGet
            );
    }

谢谢你,

3 个答案:

答案 0 :(得分:0)

获取HTTP响应对象并使用write方法。

response.getWriter()写(视图(newDate));

希望这有帮助。

答案 1 :(得分:0)

使用像implode()这样的函数和一些分隔符返回字符串而不是数组,并使用javascript中的split函数拆分结果。

 success: function (countDownDetail) {
    var countDownResult=countDownDetail.split(seperator);
    if ( countDownResult.length > 0) {
        austDay =  countDownResult[0];
        currDay =  countDownResult[1];
        }
    }

答案 2 :(得分:0)

每当你返回Ajax成功的东西时,你需要使用return JSON而不是返回视图,如下面的代码

 public ActionResult GetDownDate()

    {
    .............

    DateTime downDate = db.Maintanance.FirstOrDefault().date;
                int minutes = db.Maintanance.FirstOrDefault().duration + Convert.ToInt32(time[1]);

                DateTime newDate = new DateTime(downDate.Year, downDate.Month, downDate.Day, Convert.ToInt32(time[0]), minutes, 0);
    return Json(new { date = newDate }, JsonRequestBehavior.AllowGet);
    }

成功功能如

success: function (data) {
//data will contain date objects
}