我一直致力于ASP.NET MVC 5 Web应用程序,其中包含一个视图,其中包含一个Raphael javascript图像,该图像使用AJAX调用控制器方法来获取初始渲染的一些数据。当我在我自己的机器上本地渲染页面时,一切都按预期执行,页面加载正常。但是,当我将应用程序“发布”到测试服务器时,每当我尝试加载页面时,AJAX调用都会触发“错误”函数。
经过一些研究后,我能够通过将此标记添加到布局页面来解决一些javascript错误:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
但是,当我尝试使用Ajax调用控制器方法时,它仍然无效。当我看看firebug的问题时,我看到引发的错误是“Boostrap需要JQuery”。我已经搜索了错误,并确保脚本标签的顺序正确 - 在Boostrap之前调用JQuery:
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/boostrap.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/raphael.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/update.js")"></script>
我还检查了文件的权限,它们都有相同的,正确的权限,这让我陷入困境。当我在我的机器上本地运行应用程序时,这些控制器调用完全按预期工作,但是一旦我将应用程序发布到服务器就出错了。
我不确定还有什么可能导致此问题。任何和所有建议将不胜感激!!!
下面是对控制器方法的JQuery调用之一:
function GetESN(area, ID) {
$.ajax({
url: "/Home/GetESN",
type: 'POST',
async: false,
dataType: 'json',
cache: false,
data: { area: area, ID: ID },
success: function (data) {
esn = data
},
error: function () {
alert('error occurred');
}
});
}
如果有更多信息需要,请告诉我。
更新
该问题实际上与网站命名的方式有关 - 它需要格式化为“http://projectname.com/location”。我最终不得不将路径名拆分为“/ location”位的帐户,并在脚本的开头构建了URL。可能不是一个理想的情况,但它适用于我的情况。
答案 0 :(得分:4)
有可能是你的
"url: "/Home/GetESN",
在网络服务器上是一个不正确的网址。
尝试添加
<script>
rootUrl = '@Url.Content("~")'
</script>
到_Layout.cshtml
然后更新您的js文件,以便使用rootUrl
function GetESN(area, ID) {
$.ajax({
url: rootUrl + "Home/GetESN", // or url: rootUrl + "/Home/GetESN"
type: 'POST',
async: false,
dataType: 'json',
cache: false,
data: { area: area, ID: ID },
success: function (data) {
esn = data
},
error: function () {
alert('error occurred');
}
});
答案 1 :(得分:0)
有两种方法可以实现这一目标。
选项1
在您的ajax调用中如下更改网址,
url: @Url.Action("GetESN", "Home")
选项2
如果要避免使用剃刀标签助手,这是最佳选择。
右键单击该项目,然后选择“属性”。
在属性中,选择名为“ Web”的链接。
在“ Web”链接中,找到“ Project Url”字段。
在“项目网址”中,为项目设置名称,如下例。
Example:- http://localhost:1851/TestApp/
设置项目名称后,选择“创建虚拟目录”。
在您的Ajax调用中,如下设置URL。
Example:- url: "TestApp/Home/GetESN"
最后确保以相同的名称发布项目。示例:-TestApp