我有以下Ajax呼叫:
$.ajax({
url: '@Url.Action("DeleteUser", "Tribes")',
dataType: "json",
type: "Post",
data: {
"tribeId": tribeId,
"buId": buId,
"userId": userId
},
success: function(data) {
if (data.status === "success") {
$.smallBox({
title: "<strong>User Deleted</strong>",
content: "<i class='fa fa-clock-o'></i> <i>Tribe user was successfully deleted! <strong></strong></i>",
color: "#659265",
iconSmall: "fa fa-check fa-2x fadeInRight animated",
timeout: 4000
},
function(data) {
window.location.href = '@Url.Action("ViewTribeUsers", "Tribes", new
{
tribeId = data.tribeId,
buId = data.buId
})';
});
}
}
});
我的控制器如下:
public ActionResult DeleteUser(int tribeId, int buId, string userId)
{
clsTribes.DeleteTribeUsers(tribeId, userId);
return Json(new
{
status = "success",
tribeId = tribeId,
buId = buId
}, JsonRequestBehavior.AllowGet);
}
如何在AJAX调用后使用data.[variables]
?在这种情况下,我得到的错误是关于数据的。此行中的[变量]:
window.location.href = '@Url.Action("ViewTribeUsers", "Tribes", new
{
tribeId = data.tribeId,
buId = data.buId
})';
错误:名称“数据”在当前上下文中不存在
我相信它必须很简单,任何帮助将不胜感激!
谢谢!
答案 0 :(得分:0)
问题是因为const mapStateToProps = state => {
return {
services: state.services,
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(ServicesOverview);
是客户端JS变量,您不能在服务器端C#代码中使用它。
一种可能的解决方法是使用data
来构建基本URL,然后将Url.Action
中的属性附加到其上,如下所示:
data
这样做的缺点是您将无法获得为此URL进行路由的好处。维护路由也变得更加困难,因为如果您更改路由模式,则需要记住更新此JS逻辑。