Jquery ajax GET没有返回数据

时间:2015-05-20 20:31:34

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

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

3 个答案:

答案 0 :(得分: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');
    }

})

});

答案 1 :(得分:1)

它不是&#34;数据类型&#34;,它&#34; dataType&#34;。也许这就是问题所在。

答案 2 :(得分:0)

您在表单上使用razor语法:

@foreach (var dashboard in Model.dashboard)

但您现在使用经典语法创建网址:

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

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

  

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

%3C<的编码版本,后跟%=,然后%20是编码空间。

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

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

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

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