Member 14887148 Ответов: 1

Как я могу отправить эти данные в a ASP.NET веб-метод, а затем сохраните его в виде текста json на моем C#


Поэтому с помощью AJAX я хочу отправить это на свой сервер

{"Question":"Shiping","Answer":"no"},{"Question":"Shiping","Answer":"no"},{"Question":"Shiping","Answer":"no"}]
Затем сохраните его на моем диске c:.

Но я, кажется, не могу получить его на сервере, и я понятия не имею, какой тип данных я должен взять в качестве параметра, чтобы он работал. Это мой первый раз, когда я использую AJAX.
Продолжайте получать ошибку о первичных данных
Мои Джорданы
var FAQData = [
{"Question":"Shiping","Answer":"no"},
{"Question":"Shiping","Answer":"no"},{"Question":"Shiping","Answer":"no"}
];
// this is created in another way but posting it kinda messes with the display

function done() {

    alert(JSON.stringify(FAQData));//ignore alert

    $.ajax({
        type: 'POST',
        url: 'Userpage.aspx/SaveJSon',
        data: JSON.stringify(FAQData) ,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            alert('worked');
        }
    });
}


моя серверная сторона
[System.Web.Services.WebMethod]
       public static void SaveJSon(string[] Data)
       {
           string path = PathDetails.UserFilePath + user.Email + "\\FAQ.json";
           if (!File.Exists(path))
           {
               File.Create(path);
           }
           StreamWriter writer = new StreamWriter(PathDetails.UserFilePath + user.Email + "\\FAQ.json");
           writer.WriteLine(Data);
           writer.Close();

       }


Что я уже пробовал:

Изменение типа данных, принимаемых сервером, изменение AJAX-вызов, чтобы сказать {"данные": в формате JSON.stringfy(FAQData)}

застрял на этом на 2 дня

1 Ответов

Рейтинг:
0

F-ES Sitecore

Создайте класс для хранения ваших данных

public class QuestionData
{
    public string Question { get; set; }
    public string Answer { get; set; }
}


измените свой метод, чтобы принять массив этого типа

public static void SaveJSon(QuestionData[] data)


Измените свой js, чтобы передать данные часто задаваемых вопросов в виде параметра с именем "data"

data: JSON.stringify({data: FAQData}),


Если вы не хотите создавать тип для хранения данных вы можете использовать словарь вместо этого

public static void SaveJSon(Dictionary<string, string>[] data)


Однако это менее правильно и более подвержено ошибкам, если код изменяется.