C#方法从SQL Query返回两个值,然后通过jquery ajax调用获取

时间:2013-03-20 16:26:51

标签: c# jquery sql ajax

更新:此代码现在有效!在下面的答案和我从罗马尼亚通过电子邮件发送给我的开发人员之间,我把它整理好了。

 [Method]
    public object ConvDetails(string SENDERNAME, string VIEWURL)
    {

        {
            var list = new List<object>();

            new Command("select top 1 o.name [SENDERNAME], view_url [VIEWURL] from MESSAGE m join OPR_SECD o on UPDATED_BY = O.RECNUM where VIEW_URL like 'conversation.aspx%' and DELIVER_TO in (select OPR_INITIAL from OPR_SECD where recnum = @CURRENT_USER_ID) order by m.RECNUM desc")
                .AddInt("CURRENT_USER_ID", Common.UserID)
                .Each(R => list.Add(new
                {
                    VIEWURL = R.GetString("VIEWURL"),
                    SENDERNAME = R.GetString("SENDERNAME")
                }));

            return list;


        };
    }

这是我从我的方法中获取两个字符串的ajax调用:

   convDetails: function() {
    $.ajax({
        url: BASE_URL + "pages/services/messages.ashx?method=convdetails",
        dataType: "json",
        async: true,
        data: {},
        success: function(data) {
            $("a.new-message-alert").attr("href", '' + data[0].VIEWURL);
            $("span#message-from").text("New Message From: " + data[0].SENDERNAME);
        }
    });
}

更新:

在我收到的回复和几封发给罗马尼亚开发人员的电子邮件之间,我能够把它拼凑起来。我将代码更新为有效的!只有data.VIEWURL不起作用。我不得不添加数据[0] .VIEWURL。所以,谢谢Matt那个。另外,在我的href中,我必须输入空引号,否则它将返回NaN。不知道为什么。

谢谢!

1 个答案:

答案 0 :(得分:2)

嗯,无论你在C#端做什么,JavaScript都不会起作用。您正在尝试同步处理异步调用的结果。

你的C#看起来并不遥远,因为某些原因我第一次完全没能正确阅读它。我从来没有以这种方式使用过.ashx,我总是只是从ProcessRequest中吐出我的回复,但是如果你的代码被调用,那么我就学到了新东西。但是,我注意到你要返回一个序列化列表,但只处理一个元素。

您可以使用更多LINQy方法来消除显式列表填充,但是:

var list =
    from R in new Command("select top 1 o.name [SENDERNAME], view_url [VIEWURL] from MESSAGE m join OPR_SECD o on UPDATED_BY = O.RECNUM where VIEW_URL like 'conversation.aspx%' and DELIVER_TO in (select OPR_INITIAL from OPR_SECD where recnum = @CURRENT_USER_ID) order by m.RECNUM desc")
        .AddInt("CURRENT_USER_ID", Common.UserID)
    select new {
        VIEWURL = R.GetString("VIEWURL"),
        SENDERNAME = R.GetString("SENDERNAME") };
context.Response.Write(JsonConverter.SeralizeObject(list));

你的JS看起来应该更像:

convDetails: function() {
    $.ajax({
        url: BASE_URL + "pages/services/messages.ashx?method=convdetails",
        async: true,
        data: {},
        success: function(data) {
            $("a.new-message-alert").attr("href", data[0].VIEWURL);
            $("a.new-message-alert").text("New  message from: " + data[0].SENDERNAME);
        }
    });
}