服务器上的AJAX成功函数

这适用于我的开发机器,但不适用于生产服务器。 我试图用ajax更新一些div,但它们没有更新,虽然其他部分工作正常。 我在服务器上使用IIS 6。 当我使用firebug在服务器端调试此代码时,它不会触及我添加到success函数的任何断点。

脚本:

function updateServiceInfo(nodeId) { var id = { id: nodeId }; $.ajax({ url: '/ServiceInfo/ServiceInfoPartial', type: 'GET', data: id, dataType: 'html', success: function (data) { $('#serviceInfoContent').html(data); }, error: function (request, error) { } }); } 

控制器:

  public class ServiceInfoController : Controller { public ActionResult ServiceInfo() { return PartialView("ServiceInfo"); } public ActionResult ServiceInfoPartial(string id) { return PartialView("ServiceInfoPartial"); } } 

浏览次数:

serviceinfopartial

 @model string 

Немає опису

serviceinfo

 
Опис сервісу

控制台中返回的响应是

 GET http://localhost/Managers/GetManagers?nodeId=563344 404 Not Found 42ms 

Ahhhhhhhhhhhhhh,另一个硬编码的url:

 url: '/ServiceInfo/ServiceInfoPartial', 

永远不要在ASP.NET MVC应用程序中硬编码这样的URL。

始终使用url帮助程序生成它们:

 url: '@Url.Action("ServiceInfoPartial", "ServiceInfo")', 

或者如果这是在一个单独的javascript文件中,你不能使用url helper,只需在某些DOM元素上使用HTML5 data- *属性:

 
...

然后在你的JavaScript中简单地说:

 url: $('#serviceInfo').data('url'), 

在IIS中托管代码时代码不起作用的原因是因为在IIS中您可能在虚拟目录中托管应用程序,因此正确的URL不再是/ServiceInfo/ServiceInfoPartial而是/YourAppName/ServiceInfo/ServiceInfoPartial 。 这就是为什么你永远不应该硬编码任何url并使用帮助程序来生成它们的原因=>这是因为帮助者处理这种情况。 使用帮助程序的另一个好处是,如果您以后决定在Global.asax更改路由的布局,则无需修改所有javascript文件等…您的URL管理集中在一个位置。

这对我有用,但仅在Chrome 53中测试过:

在.cshtml文件中创建一些全局范围变量,只要注意范围问题并为变量赋予唯一的名称。

  

然后引用你的js文件……

  

你的yourJsFile.js里面:

 url: globalUrl,