0
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type = "text/javascript">
function ShowCurrentTime() {
    $.ajax({
        type: "POST",
        url: "Default.aspx/jsonrep",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        cache: false,
        success: OnSuccess,
        failure: function (response) {
            alert(response.d);
        }
    });
  }
  function OnSuccess(response) {
    alert(response.d);
  }
</script> 

<input id="btnGetTime" type="button" value="Show Current Time" 
       onclick = "ShowCurrentTime()" />

和代码文件代码是

[System.Web.Services.WebMethod]
public string jsonrep()
{
    GetOrders();
    var jsonSerialiser = new JavaScriptSerializer();

    var json = jsonSerialiser.Serialize(list);

    return json.ToString();
}

public List<DataProp> GetOrders()
{
    DataProp o = new DataProp();

    for (int i = 1; i <= 8; i++)
    {
        o.Earning = 20000 * i;
        o.Number = 8 * i;
        list.Add(o);
    }

    return list;
}

我想使用 jQuery 调用服务器端函数,该函数返回一个 json 对象但函数不起作用 - 我做错了什么?如果我在页面加载时调用函数,它工作正常是该函数返回一个 json 数据。请帮忙

4

1 回答 1

0

您缺少static此行中的参考:

public string jsonrep()

将其更改为

public static string jsonrep()

如果您想知道为什么您的方法需要是静态的,请查看此链接。从链接:

静态方法只是与其包含类的任何实例无关的方法。更常见的替代方法是实例方法,该方法的结果取决于其所属类的特定实例的状态。从某种意义上说,静态方法是无状态方法。

所以,JS 只理解静态方法,因为只有它们可以在没有类引用的情况下被实例化。

如果您想使用非静态的东西,我建议您使用asmx服务/ashx处理程序。

于 2013-08-03T06:05:15.263 回答