Javascript 服务器上的AJAX成功函数

Javascript 服务器上的AJAX成功函数,javascript,c#,jquery,asp.net-mvc,razor,Javascript,C#,Jquery,Asp.net Mvc,Razor,这可以在我的开发机器上运行,但不能在生产服务器上运行。我试图用ajax更新一些div,但是它们没有更新,尽管其他部分工作正常。我正在服务器上使用IIS 6。 当我使用firebug在服务器端调试这段代码时,它不会碰到我添加到success函数中的任何断点 脚本: function updateServiceInfo(nodeId) { var id = { id: nodeId }; $.ajax({ url: '/ServiceInfo/

这可以在我的开发机器上运行,但不能在生产服务器上运行。我试图用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");
        }
    }
观点:

服务信息部分

@model string
<p>
    Немає опису</p>

啊,另一个硬编码url:

url: '/ServiceInfo/ServiceInfoPartial',
永远不要在ASP.NET MVC应用程序中硬编码这样的URL

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

url: '@Url.Action("ServiceInfoPartial", "ServiceInfo")',
或者,如果这是在一个单独的javascript文件中,您无法使用url帮助程序,只需在某些DOM元素上使用HTML5 data-*属性:

<div id="serviceInfo" data-url="@Url.Action("ServiceInfoPartial", "ServiceInfo")">
...
</div>

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

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

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

<script>
    globalUrl = '@Url.Action("ServiceInfoPartial", "ServiceInfo")';
</script>

是的,我的javasript代码在单独的文件中。和url:'@url.Action(“ServiceInfoPartial”、“ServiceInfo”),不起作用。htis HTML5属性将在ie7中工作?@andronz,是的,它将在ie7中工作。这就是ASP.NET MVC 3低调客户端验证和AJAX已经使用的功能。即使IE7是垃圾并且不支持HTML5,jquery也会很高兴地解释附加到DOM元素的那些属性。由于IE7从未听说过HTML5或data-*属性,它会默默地忽略它们。@DarinDimitrov,关于你在单独的js文件1上写的内容。为什么要将url保存在div中而不是隐藏字段中?2.如果你这样做,javascript会与视图结合在一起,不是吗?@DarinDimitrov你觉得我的答案(对我的问题)怎么样。它不是以一种简单的方式解决任何问题吗?
<div id="serviceInfo" data-url="@Url.Action("ServiceInfoPartial", "ServiceInfo")">
...
</div>
url: $('#serviceInfo').data('url'),
<script>
    globalUrl = '@Url.Action("ServiceInfoPartial", "ServiceInfo")';
</script>
<script type="text/javascript" src="yourJsFile.js"></script>
url: globalUrl,