jquery ajax调用返回值

时间:2011-06-24 03:30:59

标签: c# javascript jquery asp.net ajax

我有一个带有静态页面方法的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";
    }

我有办法获得返回值吗?

4 个答案:

答案 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

谢谢你们的帮助。