0

我现在在互联网上寻找了超过 2 小时,试图找到如何在加载 asp.net 页面时从服务器端代码填充 jQuery 变量的简单示例。

到目前为止我所拥有的:

我有一个调用此 jquery 代码的按钮:

    function GetListOfQuestions() {
        $.ajax({
            type: "POST",
            url: 'UserProfile.aspx/getQuestions',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            error: OnAjaxError,
            success: AjaxSucceeded
        });
        //$.getJSON('UserProfile.aspx/getQuestions', {}, function (data) {
        //    alert(data);
        //});
    }

    function AjaxSucceeded(result) {

        alert(result);

    }

GetListOfQuestions 调用服务器端:

    [WebMethod]
    public static List<Question> getQuestions(){

        var userGuid = (Guid)System.Web.Security.Membership.GetUser().ProviderUserKey;
        IEnumerable<Question> list = Question.getQuestionsForUser(userGuid).Select(x => new Question
        {
            Uid = x.Uid,
            Content = x.Content
        });

        return list.ToList();
    }

如果我提醒它,结果会返回一个对象,因此它必须包含某种数据,但我找不到任何关于如何在客户端再次检索数据的示例。

我不确定我现在所做的是否正确(我是 jQuery 新手)。那么如何再次从结果变量中检索数据呢?

4

2 回答 2

3

可能有更好的方法,但这是我知道的一种方法:

[WebMethod]
    public static string getQuestions(){

        var userGuid = (Guid)System.Web.Security.Membership.GetUser().ProviderUserKey;
        IEnumerable<Question> list = Question.getQuestionsForUser(userGuid).Select(x => new Question
        {
            Uid = x.Uid,
            Content = x.Content
        });

        return new JavaScriptSerializer().Serialize(list.ToList())
    }

在您的 jQuery 方法中,您可以

result = $.parseJSON(data) ;

做一个console.log(result)看看如何遍历结果,应该只是一个 for 循环。

于 2012-09-24T18:34:46.837 回答
0

在页面上放置一个隐藏字段并在那里设置变量值,稍后从 js 读取隐藏值。

另一种选择是使用 ScriptManager.RegisterStart UpScript 将您的变量直接作为 js 写入页面。

于 2012-09-24T18:37:23.200 回答