如果我的页面请求中存在查询字符串参数,我想在 Page_Load 中查询服务器上的数据库,然后将结果返回给客户端。我可以进行查询字符串参数检查并查询数据库,但是如何将数据返回到页面以及在 javascript 端如何访问该数据?
理想情况下,我会返回一个对象结构的 JSON,它会返回一个它们的数组。
是的,返回 JSON 是最好的选择。我不确定您如何查询数据库(您使用 LINQ 还是 ADO.NET DataTables 等)
如果您没有要发送的自定义对象类型,我建议您创建一个。然后你应该得到一个数组。
例子:
public class Person {
string Name { get; set; }
int Age { get; set; }
}
Person[] pArr = new Person[5];
然后,您可以使用这样的第三方库在 JSON 中创建该数组的字符串表示形式。
string json = JsonConvert.SerializeObject(product);
然后json
,通过覆盖页面的 Render 方法,将该字符串写入 Response 对象,以便将其发送到客户端。
// 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 中引用该变量并进行必要的处理。
希望这可以帮助。