1

jQuery (1.7.2) ajax と asp.net で奇妙な問題が発生しています。

以下のコードをローカルで使用すると、すべて正常に動作するように見えます。ajax は正常に起動し、モーダルは期待どおりにポップアップし、div は下にスライドします。結果には非常に満足しています。

ただし、開発サーバーでは、いくつかの奇妙な問題が発生します。エラー関数にヒットし始めます。エラー関数では、返されるテキストは JSON 化されたタイム スタンプではなく、ページ フロー内の別のページからの HTML です。.ajax のパラメーターをいじってみました。モーダルをいじってみました。コード ビハインド メソッドでタイムスタンプを返そうとしました。dataType をテキストに変更してみました。これにより、モーダルを起動することができましたが、Inf.innerHTML は、ページ フローで他のページのレンダリングを表示することになりました。

これをデバッグするために多くの時間を費やしましたが、まだ行き詰まっています。どんなアイデアでも大歓迎です。

jQuery:

$("#<%= Btn.ClientID %>").click(function() {
            $.ajax({
                async: true,
                type: "POST",
                url: "Page.aspx/Method",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data) {
                    $("#Modal").modal({
                        closeClass: "Modal-Close",
                        escClose: false,
                        opacity: 35,
                        overlayCss: { backgroundColor: "#000" }
                    }); //end Modal
                    //timeStamp = data.d; //Timestamp elsewhere in the js
                }, //end success
                error: function(xhr, status, error) { alert("xhr: " + xhr.responseText + "\n\nstatus: " + status + "\n\nerror: " + error); }
            }); //end ajax
            return false;
        }); //end Btn.click

$(".Modal-Close").click(function() {
       ModalClose();
});

var timeStamp;

    function ModalClose() {
        var img = document.getElementById("imgP");
        var Inf = document.getElementById("Info");
        var Name = document.getElementById("<%=divName.ClientID %>").value;
        img.src = "difImg.png";
        Inf.innerHTML = "Sometext" + Name + ", MoreText.<br />" + timeStamp;
        var divO = document.getElementById("<%=divOut.ClientID %>");
        $(divO).slideDown();
    }

C# ページ コード ビハインド

[WebMethod(EnableSession = true)]
public static string Method()
{
    // Various magic
    return "{\"d\":\"" + DateTime.Now.ToString("MMMM dd, yyyy h:mm tt") + "\"}";
}
4

0 に答える 0