繁体   English   中英

如何将 javascript 变量放入 Url.Action

[英]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.origindocument.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM