我有一个带有静态页面方法的asp.net应用程序。我正在使用以下代码调用方法并获取其返回值。
$.ajax({
type: "POST",
url: "myPage/myMethod",
data: "{'parameter':'paramValue'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {alert(result);}
});
我得到的是[object Object]。
以下是我的静态方法。我的ScriptManager中也有EnablePageMethods="true"
EnablePartialRendering="true"
。
[WebMethod]
[ScriptMethod]
public static string myMethod(string parameter)
{
return "Result";
}
我有办法获得返回值吗?
答案 0 :(得分:6)
尝试使用Chrome开发者工具或Firfox的firebug插件。不确定IE的开发人员工具是否允许您检查ajax调用?
您要查找的结果字符串实际上位于结果对象中。你需要查看d变量。我记得在某处看过为什么会这样,我认为是在玩ASP.NET:|
尝试:
success: function(data) {alert(data.d);}
C#
[WebMethod]
public static string GetTest(string var1)
{
return "Result";
}
希望这有帮助。
答案 1 :(得分:4)
只是你被困在ASP.NET 3.5的JSON响应中引入的.d。引用Dave Ward,
如果你不熟悉“.d” 我指的是,它只是一个 Microsoft添加的安全功能 在ASP.NET 3.5的ASP.NET版本中 AJAX。通过封装JSON 在父对象中的响应, 框架有助于防范 particularly nasty XSS vulnerability
因此,只需检查.d
是否存在然后打开它。像这样改变你的成功功能。
success: function(result) {
var msg = result.hasOwnProperty("d") ? result.d : result;
alert(msg );
}
答案 2 :(得分:0)
这个怎么样?
$.ajax({
type: "POST",
url: "myPage/myMethod?paramater=parameter",
success: function(result) {
alert(result);
}
});
答案 3 :(得分:0)
我找到了解决方案。
您可以使用parseJSON获取结果 http://api.jquery.com/jQuery.parseJSON/
或将数据类型更改为html以查看实际值。 http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests
谢谢你们的帮助。