2016-11-16 34 views
1

我有工作得很好,當我從VS2015調試運行後:我怎樣才能把javascript變量到Url.Action

 $("#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中很好地工作。

+0

似乎很奇怪使用post和使用查詢字符串。如果切換到GET,它將被添加到查詢字符串中。 – epascarello

+0

而不是嘗試此解決方法我會調查爲什麼您的代碼在IIS中發佈後無法正常工作。你能檢查郵寄地址嗎? – user449689

+0

'bind'已棄用。您應該使用'on'。 –

回答

0

@OJ Raqueno把我在正確的道路上。

在腳本的頂部我現在聲明「myPath」。我的網站的網址結尾是「安全」所以這個測試給了我正確的道路:

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); 
     }) 
    }); 
+0

很高興知道我的幫助:) –

0

所以添加到URL

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

或更改原有的代碼來獲取和值將被添加到查詢字符串。

+0

就像我提出的問題../Employee或/僱員或〜/僱員不發揮作用時發佈到IIS – ManInMoon

+0

因此,使用.NET代碼... – epascarello

+0

'$ .post(「@ Html.Action(」ChangeDisplayChartType「, 「Employee」,new {displayChartType =「ARG1」})「+」?displayChartType =「」+ encodeURIComponent ...' – epascarello

0

您可以使用window.location.origindocument.location.origin來獲取網站的來源,無論是在VS 2015調試還是在IIS上運行。

因此而不是做

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

您可以嘗試

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

差不多!請看我的回答 – ManInMoon

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); 
     }) 
    });