通过ajax asp.net接收json

时间:2013-04-29 23:10:48

标签: javascript asp.net ajax

函数ShowFavorits中的变量数据是未定义的,即使我的ajax调用确实返回了json字符串。

<script type="text/javascript">
$(document).ready(function () {
    ShowFavorits();

    function AjaxGet() {
        var param = "{'_userID': '1337'}";
        $.ajax({
            type: "POST",
            url: "/webservices/MinSide.asmx/GetFavorits",
            data: param,
            contentType: "application/json;",
            dataType: "json",
            success: function (data) {
                if (data.hasOwnProperty("d")) {                      
                    return (data.d);
                }
            },
            error: function (data) {
                //error
            }
        });
    }

    function ShowFavorits() {
        var data = AjaxGet();

        $("#addedList").html(
        $("#addedTemplate").render(data)
        );
    }
});

        [WebMethod]
    public string GetFavorits(string _userID)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        jss.MaxJsonLength = int.MaxValue;
        string JsonData = string.Empty;

        var db = new ModelDataContext();
        var list = db.table.Where(x => x.userID == _userID).OrderBy(x=> x.TimePin).ToList();

        JsonData = jss.Serialize(list);  
        return (JsonData);
    }

为什么我不能从我的ajax返回结果?

希望有人可以帮助我,现在已经被困住几个小时了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

$.ajax中对AjaxGet的调用是异步的:函数返回undefined,因为ajax调用尚未完成。

您应该将对ShowFavourits的调用移到ajax成功函数中,以便在ajax调用完成/成功后执行

<script type="text/javascript">
$(document).ready(function () {
    // Kick-off the ajax request
    AjaxGet();

    function AjaxGet() {
        var param = {_userID: '1337'};
        $.ajax({
            type: "POST",
            url: "/webservices/MinSide.asmx/GetFavorits",
            data: param,
            dataType: "json",
            success: function (data) {
                if (data.hasOwnProperty("d")) {                      
                    ShowFavorits(data.d); // Pass the data to the template
                }
            }
        });
    }

    function ShowFavorits(data) {
        $("#addedList").html(
            $("#addedTemplate").render(data)
        );
    }
});