我有一个mvc应用程序,我在javascript上使用了很多功能,我有一个单独的文件(这就是为什么我不能使用URL )用于这些javascript调用msa.js,它在我的MVC视图上引用的文件夹脚本中是这样的:参考文件很好,但问题是javascript文件中有很多调用服务器方法的调用,这就是为什么我必须在ajax调用上多次使用属性"url“的原因。问题是,在我的本地计算机上,它工作得很好,url是这样的结构:
http://localhost:59655/WorkPanel/GetListOfPermissons
这是正确的!!但是,当我想上传服务器的应用程序时,我必须使用一个虚拟目录,这就是为什么url更改为:
http://10.10.25.161/MSA/WorkPanel/
当我在服务器上执行应用程序时,mvc尝试将url放置如下:
http://10.10.25.161/WorkPanel/GetListOfPermissons
还有问题是不要执行函数,因为url中缺少MSA目录:这是我的代码javascript的一个例子:
$.ajax({
type: "POST",
url: '/WorkPanel/GetListOfPermissons',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
有没有人遇到过这个问题??你是怎么解决这个问题的。谢谢你在高级..。何塞
发布于 2015-04-10 04:00:56
一个很好的解决方案是使用一个全局变量,在这个变量中,您可以对虚拟目录进行定位:
var dir = "/WorkPanel"
您的ajax调用是:
$.ajax({
type: "POST",
url: dir + "/GetListOfPermissons',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
});
当您想使用其他dir时,只需在文件中更改即可。希望它能帮上忙,谢谢!
发布于 2015-04-10 04:12:08
您可以使用剃刀助手将您的基url呈现为_Layout.cshtml中的全局变量,或者将使用url的某个页面呈现为answer中的全局变量。
<script type="text/javascript">
var baseUrl = '@Url.Content("~")';
</script>
在您的js文件中,您可以这样做:
$.ajax({
type: "POST",
url: baseUrl + '/WorkPanel/GetListOfPermissons',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
只需记住在已经声明的全局变量之后引用您的文件。
发布于 2015-04-10 04:16:27
感谢大家的帮助,但我认为找不到像属性或方法这样的解决方案,这就是为什么我编写自己的javascript函数并解决问题的原因,也许不是最好的解决方案,但至少不要在函数中使用硬代码.这是我的功能,也许有人可以用它:
function GetUrlAjaxCall(action, controller) {
var urlmedia = window.location.toString();
var urlSplit = urlmedia.split('/');
var url = "";
if (urlSplit.length == 7)
url = urlSplit[0].trim() + '//' + urlSplit[2].trim() + '/' + urlSplit[3].trim() + "/" + controller + "/" + action;
else
url = urlSplit[0].trim() + '//' + urlSplit[2].trim() + "/" + controller + "/" + action;
return url;
}
https://stackoverflow.com/questions/29560711
复制