Как получить файл JSON с сервера? (ASP.NET) - PullRequest
0 голосов
/ 16 января 2019

У меня есть простое веб-приложение, которое работает с набором слов с использованием JS. Чтобы протестировать основной код, я просто поместил необходимые данные в переменную в своем скрипте.

CONST WORDS = [
    ["Computer", "Ordinateur", "https://www.lifewire.com/thmb/nNDKywb8qvKzhxelVAR95sEHBj0=/768x0/filters:no_upscale():max_bytes(150000):strip_icc()/Acer-aspire-x3300-5804ec185f9b5805c2b6b9e6.jpg"],
    ["Function", "Fonction", "http://latex-cookbook.net/media/cookbook/examples/PNG/function-plot.png"],
    ["Server", "Serveur", "https://effortz.com/wp-content/uploads/dedicated-hosting-server.png"]
]

Теперь мне нужно построить базу данных (уже сделано) и получить такие данные с сервера. Итак, вопрос в том, как мне получить файл JSON с сервера, используя JS? Я знаю, как делать запросы GET, но что мне делать на сервере, чтобы он отвечал? (или, может быть, есть более простой способ получить эти данные в JS, учитывая, что я уже получил их из БД и могу легко отобразить на веб-странице). Вот код бэкэнда

namespace LFrench
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            List<Words> WordsSet = Words.GetWords("Business");//recieving from DB a set of words, that i need to use in JS
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 17 января 2019

То, что вам нужно понять, это поток вашего запроса. если вы строго хотите сделать это в событии 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
0 голосов
/ 16 января 2019

Вам нужно сделать метод возвращаемого типа json на сервере.Затем вызовите его из вашего метода get и сделайте ваш метод на стороне сервера, заполните список и верните этот список путем преобразования формата JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...