Метод Ajax POST не работает ядро ​​asp.net - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть приложение asp core core с этим контроллером:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using MySql.Data.MySqlClient;
using NewsletterWebsiteSample.Models;
using Newtonsoft.Json;

namespace NewsletterWebsiteSample.Controllers
{
    public class GalleryController : Controller
    {
        private readonly IHostingEnvironment _hostingEnvironment;
        public GalleryController(IHostingEnvironment he)
        {
            _hostingEnvironment = he;
        }

        [HttpPost]
        public IActionResult GetAll()
        {
            ErrorViewModel em = new ErrorViewModel();
            List<string> list = new List<string>();
            string[] files = Directory.GetFiles(_hostingEnvironment.WebRootPath + "\\Uploads\\Images");
            foreach (string file in files)
                list.Add(Path.GetFileName(file));

            em.Message = JsonConvert.SerializeObject(list);
            return View("Empty", em);
        }
    }
}

, и когда я вручную перехожу на эту страницу, она работает и возвращает строку json на странице, но когда я пытаюсь получить это из моего jsподать ошибку возврата ajax.Вот код, который я использую при получении

$(function () {
    $.ajax({
        type: "POST",
        url: "/Gallery/GetAll",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            alert(data);
        },
        error: function () {
            alert("ERROR");
        }
    });
});

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Я предполагаю, что вы хотите вернуть список имен файлов в формате json? Поэтому я поменяю ваш код на этот

    [HttpGet]
    public IActionResult GetAll()
    {
        ErrorViewModel em = new ErrorViewModel();
        List<string> list = new List<string>();
        string[] files = Directory.GetFiles(_hostingEnvironment.WebRootPath + "\\Uploads\\Images");
        foreach (string file in files)
            list.Add(Path.GetFileName(file));

        return Json(list);
    }

И твой код Ajax

$(function () {
    $.ajax({
        type: "GET",
        url: "/Gallery/GetAll",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            console.log(data);
        },
        error: function () {
            alert("ERROR");
        }
    });
});

Пожалуйста, дайте мне знать, если у вас есть проблемы

0 голосов
/ 29 апреля 2019

в ядре mvc, вы не должны говорить dataType: "json". пожалуйста, введите это:

$(function () {
    $.ajax({
        type: "GET",
        url: "/Gallery/GetAll",
        contentType: "application/json; charset=utf-8",

        success: function (data) {
            console.log(data);
        },
        error: function () {
            alert("ERROR");
        }
    });
});
...