2012-12-01 4 views
1

내 페이지 요청에 쿼리 문자열 매개 변수가 있으면 서버의 데이터베이스에서 Page_Load를 쿼리 한 다음 결과를 클라이언트에 반환합니다. 쿼리 문자열 param 검사를 수행하고 DB를 쿼리 할 수 ​​있지만 데이터를 페이지에 반환하는 방법과 JavaScript 쪽에서 데이터에 액세스하는 방법은 무엇입니까?asp.net에서 Page_Load의 데이터를 반환합니다.

이상적으로 나는 객체 구조의 JSON을 반환 할 것이고 그것들의 배열을 반환 할 것입니다.

답변

2

예, JSON을 반환하는 것이 가장 좋은 방법입니다. 데이터베이스 쿼리 방법이 확실하지 않습니다. (LINQ 또는 ADO.NET DataTables 등을 사용합니까?)

보내려는 유형의 사용자 지정 개체가없는 경우 만들 것을 권장합니다. 그런 다음 배열을 가져와야합니다.

예 :

public class Person { 
    string Name { get; set; } 
    int Age { get; set; } 
} 

Person[] pArr = new Person[5]; 

그런 다음 당신은 JSON에서 해당 배열의 문자열 representaion을 만들 this 같은 타사 라이브러리를 사용할 수 있습니다.

string json = JsonConvert.SerializeObject(product); 

그런 다음 당신은 응답 객체에 json 문자열이 그 페이지의 렌더링 방법을 재정 의하여, 클라이언트에 내려 보내 그래서 물품.

// 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 응답을 처리합니다. 당신은 일반적으로를 Page_Load에서하는 것처럼

를 사용하여 객체를하고, 설명 된대로 JSON 문자열로 변환 :이 대한 AJAX 요청을 사용하지 않으려면 다음

$.getJSON('url', function(data) { 
    //process data 
}); 

내 제안이다 위.

그런 다음 클라이언트 스크립트가로드 될 때 ClientScriptManager를 사용하여 클라이언트 측에서 JavaScript 변수를 만듭니다. 이 후

ClientScript.RegisterClientScriptBlock(typeof(Page), "unique_key", "var myObjectList = " + json, true); 

때 다른 AJAX 호출을하지 않고 당신이 변수가 객체의 목록 "myObjectList"라는 것이다 페이지가로드.

자바 스크립트에서 해당 변수를 직접 참조하고 필요한 처리를 수행 할 수 있습니다.

희망이 도움이됩니다.

+0

그래서 Response.Write (json)은 Page_Load 이벤트에서 수행 할 수 있지만 서버에 대한 별도 콜백을 수행하는 것처럼 보이는 jQuery가있는 것으로 보입니다. 나는 그것을 원하지 않는다. 처음으로 사용자가 사이트를 탐색 할 때 원래 요청을 홈페이지로 읽을 수 있기를 원합니다. 내가 어떻게 그럴 수 있니? onready()에는 서버에서 반환되는 데이터 인 param이 있습니까? – user441521

+0

그런 경우에는 Response.Write()를 사용하면 안됩니다. 생성 된 json 문자열을 사용하여 javascript 변수를 만들어 페이지에 포함시키고 클라이언트 측에서 사용해야합니다. – BuddhiP

+0

@ user441521, 두 번째 콜백없이 수행하는 방법에 대한 설명이 일부 추가되었습니다. 그것이 의미가 있는지보십시오. – BuddhiP

관련 문제