我有一个问题困扰着我,虽然它没有阻止我,因为我有一个解决方法。我正在尝试对我在aspx页面上的页面方法进行ajax调用。我需要返回json,但WebMethod GetGender
从未被调用,除非我使用$.ajax
调用。Jquery getJSON不工作,但阿贾克斯
所以,这个工作:
$.ajax({
type: "POST",
url: "StudentFunctions.aspx/GetGender",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var data = google.visualization.arrayToDataTable(msg.d);
var options = {
title: 'Gender',
height: '5000px'
};
var chart = new google.visualization.PieChart(document.getElementById("chart_div"));
chart.draw(data, options);
}
});
但是,没有下面的工作:
$.get("StudentFunctions.aspx/GetGender", function(msg) {
alert(msg)
}, "json");
$.post("StudentFunctions.aspx/GetGender", function(msg) {
alert(msg)
}, "json");
$.getJSON("StudentFunctions.aspx/GetGender", function(msg) {
alert(msg)
});
的三个功能上面甚至没有触发净功能,但如果我删除“json”部分来自$.post
和$.get
,它们至少会调用后端函数,但是当然不会返回json。
此外,另一个我不明白的愚蠢问题,但是当我在$.ajax
函数中得到json响应时,该对象(这里称为msg
)是什么样的? msg.d
为我做了诡计,但我不知道为什么。是否有规范?
当您使用'$ .ajax'时,响应对象的外观如何?你能把它放在这里吗? – udidu 2013-03-07 16:45:00
查看http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/和http://encosia.com/using-jquery-to-consume-aspnet- JSON的Web服务/。它解释了为什么需要完整的'.ajax()'方法。 – 2013-03-07 16:46:43
@StevenVondruska谢谢,这解释了它。好像ASP.NET框架也需要contentType。另外,在发送的页面中钻取一点让我知道msg.d问题的答案。如果你想正式确定答案,我会给你贴上正确的标签。否则,我可能会在稍后写点东西。 – 2013-03-07 17:17:51