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") + "\"}";
}