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") %>',
这被视为字符串文字,导致对
的请求
(%3C
是 <
的编码版本,后跟 %=
然后 %20
是编码的 space)。 =20=]
您应该更改 ajax 调用中的 URL 以使用剃须刀语法:
url: '@Url.Action("GetDashboard", "Dashboard")',
或者,当您在 data-action-url
属性上设置位置时,您可以从那里获取它:
url: btn.data('action-url'),
我有一个包含模型 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") %>',
这被视为字符串文字,导致对
的请求(%3C
是 <
的编码版本,后跟 %=
然后 %20
是编码的 space)。 =20=]
您应该更改 ajax 调用中的 URL 以使用剃须刀语法:
url: '@Url.Action("GetDashboard", "Dashboard")',
或者,当您在 data-action-url
属性上设置位置时,您可以从那里获取它:
url: btn.data('action-url'),