Jquery ajax GET 不返回数据

Jquery ajax GET not returning data

我有一个包含模型 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 代码 好的,我已经使用 firebug 来确认这一点。但是问题是 jquery 似乎失败了,我不确定这是为什么。

尝试:

 $('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/Dashboard/%3C%=%20Url.Acti...

%3C< 的编码版本,后跟 %= 然后 %20 是编码的 space)。 =20=]

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

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

或者,当您在 data-action-url 属性上设置位置时,您可以从那里获取它:

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