Javascript 服务器上的AJAX成功函数
这可以在我的开发机器上运行,但不能在生产服务器上运行。我试图用ajax更新一些div,但是它们没有更新,尽管其他部分工作正常。我正在服务器上使用IIS 6。 当我使用firebug在服务器端调试这段代码时,它不会碰到我添加到success函数中的任何断点 脚本: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/
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,