服务器上的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,