我在使用 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") + "\"}";
}