32

javascript を使用してベース URL を取得するにはどうすればよいですか?

たとえば、Visual Studio から自分のサイトを閲覧するときに、URL がhttp://localhost:20201/home/indexの場合、取得したいhttp://localhost:20201

サイトを IIS でホストし、仮想ディレクトリ名が MyApp で URL が のhttp://localhost/MyApp/home/index場合、http://localhost/MyApp

location.protocol+ location.hostname(および)を使用してみlocation.hostましたが、Visual Studio を介してサイトを参照すると正常に動作しますが、IIS でホストするとhttp://localhost、/MyApp が切り捨てられます。

4

8 に答える 8

3
var url = window.location.href.split('/');
var baseUrl = url[0] + '//' + url[2];
于 2013-05-22T11:20:26.843 に答える
1

クリーンなソリューションは次のようになると思います

_layoutのようにHtmlにベースURLを入れます

<div id="BaseUrl" data-baseurl="@Context.Request.Url.GetLeftPart(UriPartial.Authority)@Url.Content("~/")"></div>    

Context.Request.Url.GetLeftPart(UriPartial.Authority)はあなたに与えます

IIS からのローカルhttp://localhost:20201は、 http://localhostを提供します。

ローカルのUrl.Content("~/")は空になりますが、IIS ではアプリ名が表示されます。

次にJsから:

var baseUrl = $("#BaseUrl").data("baseurl");

次のように使用できます:

$.getJSON(baseUrl + "/Home/GetSomething", function (data) {
      //Do something with the data
});

https://msdn.microsoft.com/en-us/library/system.uri.getleftpart(v=vs.110).aspx http://api.jquery.com/data/

于 2016-08-04T16:40:08.580 に答える
1

以下のコードを試してください。

function getBaseURL() {
    var url = location.href;  // entire url including querystring - also: window.location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));


    if (baseURL.indexOf('http://localhost') != -1) {
        // Base Url for localhost
        var url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    }
    else {
        // Root Url for domain name
        return baseURL + "/";
    }

}



document.write(getBaseURL());

ありがとう、

シヴァ

于 2013-05-22T11:18:55.707 に答える
0

ページのheadタグにベース URL を設定できます。すべてのリンク/href は、これを使用して関連する href を呼び出します。

@{ var baseHref = new System.UriBuilder(Request.Url.AbsoluteUri) { Path = Url.Content("~/") }; }
<base href="@baseHref" />

説明:

  • Url.Content("~/")は相対パスを返します (この場合、サーバー上の MyApp)
  • new System.UriBuilder(Request.Url.AbsoluteUri)は、ポートとプロトコルの情報を含む UriBuilder を作成します
于 2016-03-17T10:02:26.390 に答える