【问题标题】:ajax call does not calls for some reasonajax 调用由于某种原因不调用
【发布时间】:2021-07-23 17:41:05
【问题描述】:

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

  1. 或者网址有问题,无法访问方法。
  2. 可能问题与我正在创建帖子并尝试从 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>
    
    }

【问题讨论】:

  • 您的网址应该是Home/Photosss 还是我理解的问题有误? Home/Postsss 似乎是您未在控制器中定义的 url。无论如何,您可以随时检查您正在使用的浏览器的开发工具并查看您的网络流量
  • 是的,谢谢,这是我的错误。我改变了,但仍然没有改变。在网络流量中我没有找到 photosss 调用
  • @memento 下面的回答能解决你的问题吗?

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


【解决方案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. 移除 content type 标头。 3. 将 dataSrc 值设为空字符串,因为您没有取回数据对象。

【讨论】:

    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    相关资源
    最近更新 更多