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似乎失败了,我不确定为什么会这样。
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'),