2013-08-03 25 views
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()" /> 

和代碼文件的代碼不工作是服務器端功能的使用jQuery AJAX

[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數據。請幫助

+0

如果您使用母版頁,則會出現此問題。使用母版頁時,我無法從CodeBehind頁面成功調用WebMethod。我最終創建了一項服務。 – tjcertified

回答

0

你缺少在此行中static參考:

public string jsonrep() 

將其更改爲

public static string jsonrep() 

Look at this link if you want to know why your method needs to be static。從鏈接:

靜態方法只是一個從它的包含類的任何實例分離。更常見的選擇是實例方法,該方法的結果取決於它所屬類的特定實例的狀態。從某種意義上講,靜態方法有無狀態方法。

因此,JS只理解靜態方法,因爲只有它們可以在沒有類引用的情況下被實例化。

如果你想使用非靜態的東西,我建議你使用一個asmx服務/一個ashx處理程序。

+0

感謝hungerpain.now我的代碼工作正常 – user2110266