Jquery ajax GET不返回数据

本文关键字:返回 数据 GET ajax Jquery | 更新日期: 2023-09-27 17:50:00

我有一个包含模型id和操作url的列表

 @foreach (var dashboard in Model.dashboard)
            {
                <li class="drop-text clickMe" data-id="@dashboard.DashID" data-action-url="@Url.Action("GetDashboard", "Dashboard")"> @dashboard.DashName</li>
            }

这里是jquery

 $('body').on('click', ".clickMe", function (e) {
    e.stopPropagation();
    var btn = $(this);
    $.ajax({
        url: '<%= Url.Action("GetDashboard", "Dashboard") %>',
        data: {
            id: btn.data('id')
        },
        type: 'GET',
        datatype: 'html',
        success: function (data) {
            $('#dash-content').html(data);
        },
        error: function (response) {
            $('#dash-content').html('Failed');
        }
    })
});

这是我的动作

public ActionResult GetDashboard(int? id)
    {
        var dashID = id;
        if (dashID == null || dashID == 0)
        {
            dashID = 1;
        }
        var getWidgetsQuery = (from widgets in db.widgets
                               where widgets.DashID == dashID
                               select widgets);
        dvm.widgets = getWidgetsQuery.ToList();

        return PartialView(dvm);
    }

这是jquery应该插入动作

内容的地方
<div class="container-fluid" id="dash-content">
@Html.Partial("Dashboard", Model);

当特定的列表被按下时,它会触发jquery代码ok,我已经使用firebug来确认这一点。然而问题是,jquery似乎失败了,我不确定为什么会这样。

Jquery ajax GET不返回数据

try:

 $('body').on('click', ".clickMe", function (e) {
e.stopPropagation();
var btn = $(this);
$.ajax({
    url: '<%= Url.Action("Get", "Dashboard") %>',
    data: {
        id: btn.data('id')
    },
    type: 'GET',
    datatype: 'html',
    success: function (data) {
        $('#dash-content').html(data);
    },
    error: function (response) {
        $('#dash-content').html('Failed');
    }
})

});

不是"datatype",而是"datatype"。

你在表单上使用razor语法:

@foreach (var dashboard in Model.dashboard)

但是你使用经典的语法来创建URL:

url: '<%= Url.Action("GetDashboard", "Dashboard") %>',

被视为字符串字面值,导致对

的请求

http://localhost: 53658/仪表板/% 3 c % = % 20 url.acti…

(%3C<的编码版本,后面跟着%=, %20是一个编码的空格)。

您应该更改ajax调用中的URL以使用razor语法:

url: '@Url.Action("GetDashboard", "Dashboard")',

或者,就像你在data-action-url属性上设置的位置一样,你可以从那里开始:

url: btn.data('action-url'),