【发布时间】:2013-03-07 16:41:48
【问题描述】:
我有一个问题困扰着我,但它并没有阻止我,因为我有一个解决方法。我正在尝试对我在 aspx 页面上的页面方法进行 ajax 调用。我需要取回 json,但 WebMethod GetGender 永远不会被调用,除非我使用 $.ajax 调用。
所以,这个工作:
$.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)
});
上面的三个函数甚至不会触发.Net函数,但是如果我从$.post和$.get中删除“json”部分,它们至少会调用后端函数,但当然不会'不返回 json。
另外,另一个我不理解的问题我觉得很愚蠢,但是当我在$.ajax函数中得到json响应时,那个对象(这里称为msg)是什么样的? msg.d 对我有用,但我不知道为什么。某处有规范吗?
【问题讨论】:
-
当您使用
$.ajax时,响应对象是什么样的?你能把它放在这里吗? -
看看encosia.com/… 和encosia.com/using-jquery-to-consume-aspnet-json-web-services。它解释了为什么需要完整的
$.ajax()方法。 -
@StevenVondruska 谢谢,这就解释了。似乎 ASP.NET 框架也需要 contentType。此外,在您发送的页面中深入了解一下,我得到了 msg.d 问题的答案。如果您想形式化答案,我会将您标记为正确的。否则我以后可能会写一些东西。
-
我添加了一个答案,以便其他人可以从中受益!
-
谢谢,我对来自两个不同 Stevens 的回答感到有些困惑。谢谢你们俩!