如何将javascript变量放入Url.Action

时间:2016-11-16 13:36:30

标签: javascript asp.net-mvc

当我从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中运行良好。

4 个答案:

答案 0 :(得分:1)

您可以尝试使用此代码。

  $("#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);
        })
    });

答案 1 :(得分:0)

然后将其添加到网址

$.post("../Employee/ChangeDisplayChartType?displayChartType=" + encodeURIComponent($("#DisplayChartType").val()), function(){});

或将原始代码更改为GET,该值将添加到查询字符串中。

答案 2 :(得分:0)

您可以使用window.location.origindocument.location.origin获取您网站的来源,无论是在VS 2015调试中运行还是在IIS上运行。

所以不要做

$.post("../Employee/ChangeDisplayChartType"

你可以尝试

$.post(document.location.origin + "/Employee/ChangeDisplayChartType"

答案 3 :(得分:0)

@OJ Raqueno让我走上了正确的道路。

在脚本的顶部,我现在声明" myPath"。我的网站网址以" secure"结尾所以这个测试给了我正确的道路:

    $("#DisplayChartType").bind("change", function () {

        $.post(myPath + "/Employee/ChangeDisplayChartType", { displayChartType: $("#DisplayChartType").val() }, function (data) {
            alert($("#DisplayChartType").val());
            iDependOnMyParameter(data);
        })
    });

然后我这样做:

$this->db->query("select()->from('travels_detail')->where('destination', $country_id");