1

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

 [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。所以,感谢马特的那个。另外,在我的href中,我必须加上空引号,否则它会返回NaN。不知道为什么。

谢谢!

4

1 回答 1

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);
        }
    });
}
于 2013-03-20T16:42:53.630 回答