这可能很简单,但我已经被困了一段时间。
我有一个用户控件,它正在调用这样的方法:
$(document).ready(function () {
$("#myabtags").tagit({
tagSource: function (request, response) {
$.ajax({
type: "POST",
url: "Services/ForumOperationService.svc/GetTags",
datatype: "json",
contentType: "application/json; charset=utf-8",
data: '{"prefix":"' + request.term + '"}',
success: function (data) {
response(data.GetTagsResult);
}
});
}
});
});
但是,此用户控件在我的网站上使用了几个地方。例如在root,/ Admin /和其他几个。
我想做类似的事情:
url: "~/Services/ForumOperationService.svc/GetTags"
你如何在jQuery中做到这一点?
Attemps :
将斜线放在前面,比如
url: "/Services/ForumOperationService.svc/GetTags"
这不起作用。我收到了404错误:http://localhost:16481/Services/ForumOperationService.svc/GetTags" (gives 404)
。
相反它应该是
http://localhost:16481/Client/Services/ForumOperationService.svc/GetTags"
答案 0 :(得分:2)
如果您的应用程序始终位于同一位置,请使用绝对路径("/Services/ForumOperationService.svc/GetTags"
)。但是,如果您将相同的代码库部署到多个站点(可能具有不同的根路径),我会使用此技巧:
它的工作方式如下:我假设我的应用程序的所有JS脚本都在一个文件夹中,例如Scripts
。然后,我有一个具有实用程序的通用JS文件,包括保留绝对根URL的位置和制作绝对URL的方法。然后我用该src搜索一个脚本块,并提取根URL。
(function($)
{
$.myapp = {};
var $a = $.myapp;
$.extend($a, {
rootUrl: '',
makeAbsoluteRootPath: function(path) {
return path.replace('~/', $a.rootPath);
}
});
var tag = $('script[src*="scripts"]').first();
if (tag.length > 0) {
var url = tag.attr('src').replace(/\/?(scripts).+$/i, '/');
$a.rootPath = url;
}
})(jQuery);
现在您可以动态解析绝对根路径:
url: $.myapp.makeAbsoluteRootPath("~/Services/ForumOperationService.svc/GetTags");
答案 1 :(得分:1)
要创建相对于网站客户端根目录的路径,请添加斜杠:
url: "/Client/Services/ForumOperationService.svc/GetTags"
注意 - 如果Client
是IIS Express中的虚拟目录/应用程序,并且安装时它将没有Client
位,则需要更改它。