如果我的頁面請求中存在查詢字符串param,我想查詢Page_Load中服務器上的數據庫,然後將結果返回給客戶端。我可以做查詢字符串參數檢查和查詢數據庫,但我如何返回數據到頁面和JavaScript端如何訪問該數據?asp.net在Page_Load中返回數據
理想情況下,我會返回一個對象結構的JSON,它將返回它們的一個數組。
如果我的頁面請求中存在查詢字符串param,我想查詢Page_Load中服務器上的數據庫,然後將結果返回給客戶端。我可以做查詢字符串參數檢查和查詢數據庫,但我如何返回數據到頁面和JavaScript端如何訪問該數據?asp.net在Page_Load中返回數據
理想情況下,我會返回一個對象結構的JSON,它將返回它們的一個數組。
是的,返回JSON將是最好的選擇。我不知道你如何查詢你的數據庫(你使用LINQ或ADO.NET DataTables等)
如果你沒有自定義對象的類型你想發送,我建議你創建一個。那麼你應該得到他們的數組。
例子:
public class Person {
string Name { get; set; }
int Age { get; set; }
}
Person[] pArr = new Person[5];
然後你可以使用一個第三方庫像this創造JSON數組的字符串命題。
string json = JsonConvert.SerializeObject(product);
然後寫些json
串到Response對象,以便其發送到客戶端,通過重寫頁面的Render方法。
// Don't expect this code to work as it is, but take this as a guidance
Response.Clear();
Response.Write(json);
Response.Close();
在客戶端使用jQuery庫向頁面發送請求,併爲您處理JSON響應。
$.getJSON('url', function(data) {
//process data
});
這裏是我的建議,如果你不想使用此AJAX請求:
使用的對象,你通常會在Page_Load做,並將其轉換爲一個JSON字符串作爲解釋以上。
然後使用ClientScriptManager在客戶端加載時創建一個JavaScript變量。
ClientScript.RegisterClientScriptBlock(typeof(Page), "unique_key", "var myObjectList = " + json, true);
在此之後,當你將有一個變量命名爲「myObjectList」與對象的列表頁面加載,而無需做出不同的AJAX調用。
您可以直接在JavaScript中引用該變量並進行必要的處理。
希望這會有所幫助。
所以Response.Write(json)可以在Page_Load事件中完成,但是你在那裏的jQuery看起來像是對服務器進行了單獨的回調。我不想那樣。我希望能夠在用戶第一次在那裏瀏覽時向主頁讀取原始請求。我會怎麼做? onready()是否有一些參數是從服務器返回的數據? – user441521
在這種情況下,你不應該做一個Response.Write()。您應該使用生成的json字符串創建一個javascript變量,將其包含在頁面中,並在客戶端使用它。 – BuddhiP
@ user441521,我已經在最後添加了一些暗示,說明如何在沒有第二次回調的情況下進行操作。看看它是否有道理。 – BuddhiP