我想在Web服务(.asmx文件)中运行函数
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: '/Admin/WebSrvcs/Management.asmx/f_SearchLabel',
data: "{_sQuery:'" + obj.value + "'}",
dataType: "json",
但我不知道我的根网址(http://localhost:4399/VirDir或其他可能的地址)将在js文件中的哪个地址。我需要到达应用程序的根文件夹才能找到asmx文件。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'http://localhost:4399/virDir/Admin/WebSrvcs/Management.asmx/f_SearchLabel',
data: "{_sQuery:'" + obj.value + "'}",
dataType: "json",
我正在使用Visual Studio 2008并使用C#构建网站。
任何帮助将不胜感激
答案 0 :(得分:1)
如果您正在使用母版页,那么这就变得很方便了:
在Master Page的HEAD中:
<script type="text/javascript">
var baseUrl = '<%# ResolveUrl("~/") %>';
function ResolveUrl(url) {
if (url.indexOf("~/") == 0) {
url = baseUrl + url.substring(2);
}
return url;
}
</script>
在Master Page .cs页面中:
protected void Page_Load(object sender, EventArgs e)
{
Page.Header.DataBind();
}
然后在你的javascript中:
ResolveUrl("~/Admin/WebSrvcs/Management.asmx/f_SearchLabel")
答案 1 :(得分:0)
有一些方法可以做到这一点。
一种方法是迭代页面上的<script>
元素并检查src属性是否包含所需的脚本名称(例如<script src="my/js/dir/myScript.js"></script>
),然后提取所需的路径。
虽然这可能是一种在其他服务器上移植东西的简单方法,但您可能会遇到“myScript.js
”可能在不同位置被多次包含的问题,因此它不会那么可靠。
另一种方法是包含某种配置文件,您可以使用以下内容设置应用程序设置:
文件:app-config.js
var AppConfig = {
"someImportantPath" : "some/important/path",
"anotherPath" : "another/path"
}
您可以在整个应用程序中使用此全局变量。
答案 2 :(得分:0)
也许我错过了一些东西,但如果javascript和页面在同一台服务器上,你可以用js来做这样的事情:
<script>
var pd = parent.document;
var location = pd.location.protocol + "//" + pd.location.host;
alert(location);
</script>
此外,您可以为您的javascript编写HTTP处理程序,当请求进入时,您可以通过获取请求的完整URL来填写变量。
internal static string GetFullPath(HttpRequest request)
{
Uri uri = request.Url;
string fullUrl = String.Format("{0}{1}{2}{3}", (request.IsSecureConnection) ? "https://" : "http://",
uri.Host, (uri.IsDefaultPort) ? "" : String.Format(":{0}", uri.Port), uri.AbsolutePath);
Int32 index = fullUrl.LastIndexOf("/");
fullUrl = fullUrl.Remove(index + 1, (fullUrl.Length - 1) - index);
return fullUrl;
}