0

我正在使用 jQuery post 向服务器发出 post 请求,它在 IDE 中运行良好,但在生产服务器上它会静默失败。

我发布到的 URL 是这样的: $.post("/NffCall/GetNffOrdersCallInfo", ... );

我向此操作方法发出发布请求: [HttpPost] public JsonResult GetNffOrdersCallInfo()

我的 IDE URL 如下所示:

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

我的服务器生产 URL 如下所示:

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

在上面的服务器生产 URL 中,URL 路径是 serverName.MyDomainName.dk/WebSiteName

我在 IDE 中发布的 URL 工作正常:/NffCall/GetNffOrdersCallInfo

但我想知道,我应该更改此 URL 以在服务器生产环境中工作吗?

在 IDE 中,我使用 [HttpPost] public JsonResult GetNffOrdersCallInfo() 使用 jQuery 动态生成一些 HTML。 当我在服务器上运行它时。只是什么都没有发生。

我是否遗漏了我的 URL 中的某些部分,这在我的服务器场景中是必需的?或者可能是什么问题?我使用的服务器是 Windows Server 2012。

4

2 回答 2

3

您似乎已将 url 硬编码到 javascript 文件中的控制器操作,而不是使用 URL 助手来生成它:

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

在 ASP.NET MVC 应用程序中,您应该始终使用 URL 帮助程序来生成控制器操作的 url。例如:

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

然后你可以使用这个全局 javascript 变量:

$.post(myUrl, ... );

除了使用全局 javascript 变量来存储 url,您还可以将其存储为 DOM 的一部分。例如,您可能正在对一些 HTML 元素进行 AJAX 化,例如 div、表单、按钮或其他任何东西。因此,您可以将此 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您的应用程序正在运行(本地、测试、生产……)

于 2013-10-28T21:14:32.583 回答
0

如果应用程序托管在http://host/TCWebToolsTestTwo/,则进行与此地址相关的所有服务调用。这意味着您可能需要/根据情况(或页面所在的位置)删除前导或更改 URI

于 2013-10-28T21:05:03.327 回答