【问题标题】:Jquery ajax GET not returning dataJquery ajax GET不返回数据
【发布时间】:2015-08-02 07:10:49
【问题描述】:

我有一个包含模型 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 似乎失败了,我不确定这是为什么。

【问题讨论】:

标签: javascript c# jquery html asp.net-mvc-5


【解决方案1】:

尝试:

 $('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');
    }

})

});

【讨论】:

  • 我不知道这是如何解决问题的,您介意解释一下如何解决问题吗?
【解决方案2】:

不是“数据类型”,而是“数据类型”。也许这就是问题所在。

【讨论】:

    【解决方案3】:

    您在表单上使用了 razor 语法:

    @foreach (var dashboard in Model.dashboard)
    

    但是您随后会使用经典语法来创建 URL:

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

    这被视为字符串文字,导致请求

    http://localhost:53658/Dashboard/%3C%=%20Url.Acti...

    (%3C 是&lt; 的编码版本,后跟%=,然后%20 是编码空间)。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 2013-04-23
      • 2014-12-14
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多