2013-10-28 14 views
0

我正在使用jQuery post向服務器發出發佈請求,並且它在IDE中正常工作,但在生產服務器上它默默地失敗。我的jQuery發佈URL在IDE中正常工作,是否應該在服務器上更改生產?

我發佈的URL是這樣的: $ .post(「/ NffCall/GetNffOrdersCallInfo」,...);

我做一個POST請求這個動作方法: [HttpPost] 公共JsonResult GetNffOrdersCallInfo()

我的IDE URL看起來像這樣:

http://localhost:54415/NffCall/Details/SE/10356392 

我的服務器生產網址如下所示:

http://appsrv-se.MyDomainName.dk/TCWebToolsTestTwo/NffCall/Details/SE/10356392 

在上面的服務器生產URL中,URL路徑是 服務器Name.MyDomainName.dk/WebSiteName

我在IDE中發佈帖子的網址工作正常: /NffCall/GetNffOrdersCallInfo

但我想知道,我應該改變這個URL服務器生產摸出環境?

在IDE我使用 [HttpPost] 公共JsonResult GetNffOrdersCallInfo() 動態生成一些HTML與jQuery。 當我在服務器上運行它。只是沒有發生。

我是否在我的URL中缺少一些部分,這在我的場景中在服務器上是必需的? 或者有什麼問題? 我正在使用的服務器是Windows Server 2012.

+0

很好,顯然你將不得不在生產服務器上將其更改爲'/ TCWebToolsTestTwo/NffCall/...',因爲這些文件的位置不同。 –

+0

看起來像你正在使用絕對URI。你可以嘗試做一些類似於./NffCall/GetNffOrdersCallInfo或NffCall/GetNffOrdersCallInfo(取決於你的瀏覽器位置在哪裏) – heavyhorse

+0

謝謝你們,你們的建議是否正確。我使用的解決方案是Darin Dimitrov's,它剛剛引起我的注意。 – RuneHansen

回答

3

您似乎已將url編碼爲您的控制器操作在JavaScript文件中,而不是使用URL助手生成它:

$.post("/NffCall/GetNffOrdersCallInfo", ...); 

在您應該始終使用URL helper生成鏈接到一個控制器動作ASP.NET MVC應用程序。例如:

<script type="text/javascript"> 
    var myUrl = '@Url.Action("GetNffOrdersCallInfo", "NffCall")'; 
</script> 

,然後你可以使用這個全局JavaScript變量:

$.post(myUrl, ...); 

或者使用一個全局JavaScript變量來存儲你可以將其存儲爲DOM的一部分的URL。例如,您可能會對某些HTML元素(如div,表單,按鈕等)進行AJAX化。所以,你可以嵌入此URL作爲DOM元素的一部分:

<div id="someDiv" data-url="@Url.Action("GetNffOrdersCallInfo", "NffCall")">Click me</div> 

,然後在你的JavaScript文件,你可能會訂閱這個元素的一些單擊事件或某事:

$('#myDiv').click(function() { 
    var url = $(this).data('url'); 
    $.post(myUrl, ...); 
}); 

注意如何在所有情況下,URL都是由一個URL助手生成的,這個URL助手關於你定義的路由,並考慮到虛擬目錄名等託管環境......所以基本上保證了無論你的應用程序在哪裏都會生成一個正確的url運行(本地,測試,生產......)

+0

嗨達林季米特洛夫,很高興在這裏見到你,當我在StackOverFlow上找到解決方案時,我經常看到你的名字,你必須是ASP.NET MVC的國王或王子的東西;)我已經部署了你的解決方案生產,它當然工作得很好:) – RuneHansen

0

如果應用程序託管在http://host/TCWebToolsTestTwo/,請進行與此地址相關的所有服務調用。這意味着您可能需要刪除前導/或根據情況(或頁面所在的位置)更改URIs

相關問題