То, что вам нужно понять, это поток вашего запроса. если вы строго хотите сделать это в событии Page_Loag
, то, я полагаю, вам придется создать в вашем Javascript
метод, который будет принимать ваши данные в качестве параметра, а затем вызвать метод Javascript из C# CodeBehind
, предполагая, что данные в параметре в формате JSON
. Этот метод работает, но не очень эффективен.
Другой способ заключается в том, что на вашей стороне JQuery
вы должны сделать ajax
вызов вашему WebMethod
в CodeBehind
, который фактически отправит ответ в формате JSON
. Это более чистый способ сделать это.
Ваш JQuery должен выглядеть так:
$(document).ready(function(){
$.ajax({
method: "GET", accept: "application/json; charset=utf-8;",
url: 'MyPage.aspx/GetDataFromDB', success: function(data){
console.log('Success Response in JSON: ' + data.d); // notice *data.d*, Calling from WebMethods returns the object encoded in the .d property of the object.
}, fail: function(err){
console.log(err);
}
});
});
А ваш CodeBehind
должен выглядеть так:
[WebMethod]
public static string GetDataFromDB()
{
var myData = YourDbCall(); // Some method to retrieve data from database
var body = new
{
Firstname = myData.Firstname,
Lastname = myData.Lastname,
Email = myData.Email,
// Any Other Information
};
var json = JsonConvert.SerializeObject(body);
return json;
}
EDIT
Вот как ваш набор слов будет отправлен в формате JSON:
[WebMethod]
public static string GetDataFromDB()
{
List<Words> WordsSet = Words.GetWords("Business");
return JsonConvert.SerializeObject(WordsSet);
}
Убедитесь, что вы установили Newtonsoft.JSON
из Nuget Package Manager Console
. если нет, вы можете открыть консоль диспетчера пакетов и запустить эту команду:
PM> Install-Package Newtonsoft.Json