[英]How can I put javascript variable into Url.Action
当我从 VS2015 调试运行时,我有一个很好的帖子:
$("#DisplayChartType").bind("change", function () {
$.post("../Employee/ChangeDisplayChartType", { displayChartType: $("#DisplayChartType").val() }, function (data) {
iDependOnMyParameter(data);
})
});
但是一旦我发布到 IIS,帖子就不起作用了。 我尝试在帖子中使用 ../、/ 和 ~/ 但没有效果。 我在网上搜索并找到了下面的方法,但我仍然将 ARG1 作为参数而不是我的 javascript 变量发送。
$("#DisplayChartType").bind("change", function () {
$.post("@Html.Action("ChangeDisplayChartType", "Employee", new { displayChartType = "ARG1" })".replace("ARG1",$("#DisplayChartType").val()) , function (data) {
iDependOnMyParameter(data);
})
});
我该怎么做? 我真的很想继续使用 $.post 方法,因为它在 VS 中效果很好。
你可以试试这个代码。
$("#DisplayChartType").bind("change", function () {
var chartType = $("#DisplayChartType").val();
var url="@Url.Action("ChangeDisplayChartType", "Employee", new { displayChartType = "ARG1" })";
$.post(url.replace("ARG1", chartType), function (data) {
iDependOnMyParameter(data);
})
});
所以把它添加到url
$.post("../Employee/ChangeDisplayChartType?displayChartType=" + encodeURIComponent($("#DisplayChartType").val()), function(){});
或者将您的原始代码更改为 GET,该值将添加到查询字符串中。
您可以使用window.location.origin
或document.location.origin
来获取您网站的来源,无论是在 VS 2015 调试中还是在 IIS 上运行。
所以而不是做
$.post("../Employee/ChangeDisplayChartType"
你可以试试
$.post(document.location.origin + "/Employee/ChangeDisplayChartType"
@OJ Raqueno 让我走上了正确的道路。
在脚本顶部,我现在声明“myPath”。 我的网站 URL 以“secure”结尾,因此此测试为我提供了正确的路径:
var myPath = document.URL;
if (!myPath.endsWith("secure")) {
myPath = "";
}
然后我这样做:
$("#DisplayChartType").bind("change", function () {
$.post(myPath + "/Employee/ChangeDisplayChartType", { displayChartType: $("#DisplayChartType").val() }, function (data) {
alert($("#DisplayChartType").val());
iDependOnMyParameter(data);
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.