@ZyfMoXa
учусь программировать на практике

Почему Ajax возвращает ошибку из метода?

Добрый день.
Есть таблица, которая заполняется динамически. Есть кнопка с ajax, которая передает данные из таблицы в метод контроллера, далее на основании этих данных нужно создать Excel (а лучше открыть существующий и поместить туда эти данные).
View с ajax
var testDataN = [{ "Date": "01.01.2015",  "Staff": "staff", "TypeTo": "DO", "Work": "work", "Tp": 6 }];
$.ajax({
    type: "POST",
    url: "/Naryad/ExportToExcel",
 

    data: JSON.stringify(testDataN),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: successFunc,
    error: errorFunc


[HttpPost]
        public ActionResult ExportToExcel(Naryad[] testDataN)
        {


          var lines = new List<string>(testDataN.Length);
            foreach (var naryad in testDataN)
            {
               // lines.Add(string.Join("\t", naryad.Date, naryad.Staff, naryad.TypeTo, naryad.Work, naryad.Tp));
                lines.Add(string.Join("\t",naryad.Staff, naryad.TypeTo));
            }
          //  return View("\n", lines);
            string str = string.Join("\n", lines);
            
           

            StringBuilder sb = new StringBuilder();

            sb.AppendLine(str);
            Response.ClearContent();
            Response.ContentEncoding = Encoding.GetEncoding("Windows-1251");
            Response.ContentType = "applicationd/vnd.ms-excel";
            Response.AddHeader("Content-Disposition", "attachment; filename=csvfile.csv");
            Response.Write(sb.ToString());
            Response.Flush();
            Response.End();
            return View();

в дебаггере ошибок нет, ответ приходит строка то что нужно, но по факту файл не создается и возвращается ошибка из ajax (Ошибка + строка с данными)
Помогите, пожалуйста. не могу понять в чем проблема
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
@ZyfMoXa Автор вопроса
учусь программировать на практике
https://www.codeproject.com/Tips/1156485/How-to-Cr...
вот тут решение моей проблемы. мало ли, кому понадобится
Проблема была в том что AJAX-запрос отправляется на сервер, а файл пыталась открыть на клиенте внутри обратного вызова. Так нельзя. нужно создать файл на сервере (желательно временный) и туда подгружать данные
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
Ваш запрос возвращает разметку, в которой боком/раком примешан Excel-файл.
Хотите понять что написали ересь? Напишите unit-тест на этот функционал и увидите проблему сразу.
Метод должен вернуть не View, а что-то вроде
return File(new MemoryStream(), "applicationd/vnd.ms-excel","fileName")
где вместо MemoryStream должен быть поток с содержимым файла.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы