0

我在函数 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 返回结果?

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

提前致谢。

4

1 回答 1

1

$.ajax对in的调用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)
        );
    }
});
于 2013-04-29T23:27:03.710 回答