ajax调用由于某种原因不调用

时间:2021-04-30 11:10:15

标签: c# asp.net json .net ajax

似乎所有内容都输入正确,但是尝试了多少 - 没有任何效果。请告诉我这里可能有什么问题。我的假设是

  1. 或者网址有问题,无法访问该方法。
  2. 也许问题与我正在创建 Posts 而我试图从 Postsss 获取数据有关(尽管这似乎是应该完成的方式。

该表根本没有填充数据。也就是ajax方法本身由于某种原因没有接收到它们,但是为什么我在url中指定了正确的地址?

控制器方法

using Project.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using System.Text.Json;

namespace Project.Controllers
{
    [Authorize]
    public class HomeController : Controller
    {
        public async Task<IActionResult> Photos()
        {
            return View();
        }
        public async Task<IActionResult> Photosss()
        {
            var client = new RestClient("https://jsonplaceholder.typicode.com/photos");
            var request = new RestRequest(Method.GET);
            IRestResponse response = await client.ExecuteAsync(request);
            var content = JsonConvert.DeserializeObject<JArray>(response.Content);

            var jAlbumsArray = content.ToObject<List<JObject>>();

            foreach (var obj in jAlbumsArray)
            {
                if (jAlbumsArray.IndexOf(obj) == 1)
                {
                    foreach (var p in obj.Properties())
                    {
                        if (p.Name == "title")
                            obj["title"] = "this title is changed";  //replace some data
                    }
                }
            }

            var jAlbums = JArray.FromObject(jAlbumsArray);


            var albums = jAlbums.Select(x => new Photos
            {
                Id = (int)x["id"],
                AlbumId = (int)x["albumId"],
                Title = (string)x["title"],
                Url = (string)x["url"],
                ThumbnailUrl = (string)x["thumbnailUrl"]
            }).ToList();

            var json = JsonConvert.SerializeObject(albums);

            return Content(json, "application/json");
        }

    }
}

在视图中

        <table id="photosTable">
            <thead>
                <tr>
                    <th>AlbumId</th>
                    <th>Id</th>
                    <th>Title</th>
                    <th>Url</th>
                </tr>
            </thead>
        </table>
        
ajax call 

<link href="//cdn.datatables.net/1.10.24/css/jquery.dataTables.min.css" />

    @section scripts{
        <script src="//cdn.datatables.net/1.10.24/js/jquery.dataTables.min.js"></script>
    
        <script>
            $(document).ready(function () {
                $("#photosTable").DataTable(
                    {
                        ajax: {
                            url: "Home/Postsss",
                            type: "GET",
                            contentType: "application/json",
                            datatype: "json",
                            dataSrc: "data"
                        },
                        "columns": [
                            { data: "AlbumId" },
                            { data: "Id" },
                            { data: "Title" },
                            { data: "Url" }
    
                        ]
                    })
                }
            }
        </script>
    
    }

1 个答案:

答案 0 :(得分:1)

试试这个:

 $(document).ready(function () {
        $("#photosTable").DataTable(
            {
                ajax: {
                    url: "/Home/Photosss",
                    type: "GET",
                    datatype: "json",
                    dataSrc: ""
                },
                "columns": [
                    { data: "AlbumId" },
                    { data: "Id" },
                    { data: "Title" },
                    { data: "Url" },
                    { data: "ThumbnailUrl" }
                ]
            })
    }
    );

更改: 1. 在表格标题中添加ThumbnailUrl 列。 2. 删除内容类型标题。 3. 将 dataSrc 值设为空字符串,因为您没有取回数据对象。