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;


        };
    }

これが私のメソッドから2つの文字列を取得するための私の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だけでは機能しませんでした。data[0].VIEWURLを追加する必要がありました。だから、マットに感謝します。また、私のhrefでは、空の引用符を挿入する必要がありました。そうしないと、NaNが返されます。理由はわかりません。

ありがとう!

4

1 に答える 1

2

そうですね、そのJavaScriptは、C#側で何をしても機能しません。非同期呼び出しの結果の同期処理を試みています。

あなたのC#はそれほど遠くに見えません。何らかの理由で、私は最初にそれを完全に正しく読むことができませんでした。私はこれまで.ashxまったくそのように使用したことはなく、常にProcessRequestからの応答を吐き出しましたが、コードが呼び出された場合は、何か新しいことを学びました。ただし、シリアル化されたリストを返しているのに、1つの要素のみを処理していることに注意してください。

ただし、より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 に答える