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

C# 方法从SQL查询返回两个值,然后通过jquery ajax调用获取,c#,jquery,sql,ajax,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]

更新:此代码现在可以工作了在下面的答案和我的开发人员从罗马尼亚给我发来的电子邮件之间,我把问题解决了

 [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;


        };
    }
更新:

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


谢谢

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

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

您可以使用一种更为简单的方法来消除显式列表填充,不过:

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);
        }
    });
}

非常感谢您的快速回复。如何判断我使用的是MVC还是Web表单?我通常只负责这里的CSS/HTML内容。所以,我们应用程序的整个ASP方面对我来说有点陌生。这是我的页面源代码。这是否意味着它是web表单<代码>调用时当前也会引发此异常<代码>调用目标已引发异常。-->System.Data.SqlClient.SqlException:将数据类型varchar转换为数字时出错。\r\n但没有理由将varchar转换为数字。一切都是字符串。ViewState表示它是WebForms,是的。在WebForms中使用JSON进行AJAX回调有几种不同的方法,最简单的方法可能是
asmx
。异常可能是由您的加入条件引起的-
UPDATED\u by=RECNUM
,是由varchar更新的吗?好的,我修复了varchar错误。我在facepalm中使用了@Variable引号。现在它的投掷<代码>System.Reflection.TargetInvocationException:调用的目标已引发异常。-->System.NullReferenceException:对象引用未设置为对象的实例。\r\n
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);
        }
    });
}