我正在构建一个Web应用程序,我正在尝试在WebForm中调用WebMethod,我已经尝试了谷歌中的每一个页面,但我仍然一无所获。这是Jquery Ajax调用的一个例子
$.ajax({
type: "Post",
url: "Default.aspx/Return",
data: {dato:'Hello'},
contentType: "application/json; chartset:utf-8",
dataType: "json",
success:
function (result) {
if (result.d) {
alert(result.d);
}
},
error:
function (XmlHttpError, error, description) {
$("#grdEmpleados").html(XmlHttpError.responseText);
},
async: true
});
这是代码隐藏中的WebMethod
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public static string Return(string dato)
{
return dato;
}
答案 0 :(得分:1)
您不能以这种方式访问静态方法。删除“静态”引用,它将工作。另外,就像其他人说的那样 - 不要将其用作方法名称“返回”。
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Return(string dato)
{
return dato;
}
答案 1 :(得分:0)
我认为,在你的成功事件中,使用带有结果的函数,这是一个字符串,你试图访问名为d的属性,假设result是一个对象。
仅使用alert(result);
用户F12工具,用于调试和查找错误。
答案 2 :(得分:0)
确保您已在ScriptManager元素中启用了页面方法:
<asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true" />
和你的方法
$.ajax({
type: "Post",
url: '<%= ResolveUrl("~/Default.aspx/Return") %>',
data: {dato:'Hello'},
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function (result) {
alert(result);
},
error:
function (XmlHttpError, error, description) {
$("#grdEmpleados").html(XmlHttpError.responseText);
},
async: true
});
答案 3 :(得分:0)
试试这个
var url = window.location.pathname + "/Return";
$.ajax({
type: "Post",
url: url,
data: {dato:'Hello'},
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function (result) {
alert(result.d);
},
error:
function (XmlHttpError, error, description) {
$("#grdEmpleados").html(XmlHttpError.responseText);
},
async: true
});`