1

これはおそらく非常に単純ですが、私はしばらく立ち往生しています。

次のようなメソッドを呼び出すユーザー コントロールがあります。

 $(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);
                    }
                });
            }
        });
    });

ただし、このユーザー コントロールは、私の Web サイトのいくつかの場所で使用されています。たとえば、ルート、/Admin/、およびその他のいくつか。

私は次のようなことをしたいと思います:

url: "~/Services/ForumOperationService.svc/GetTags"

jQuery でどのように行うのですか?

試行回数:

のようにスラッシュを前に置く

url: "/Services/ForumOperationService.svc/GetTags"

それはうまくいきません。404 エラーが返されます: http://localhost:16481/Services/ForumOperationService.svc/GetTags" (gives 404).

代わりに

http://localhost:16481/Client/Services/ForumOperationService.svc/GetTags"
4

2 に答える 2

2

アプリケーションが常に同じ場所にある場合は、絶対パス ( "/Services/ForumOperationService.svc/GetTags") を使用します。ただし、ルート パスが異なる可能性がある複数のサイトに同じコードベースをデプロイする場合は、次のトリックを使用します。

これは次のように機能します。アプリケーションのすべての JS スクリプトは、Scripts. 次に、絶対ルート URL を保持する場所や絶対 URL を作成するメソッドなど、ユーティリティを含む共通の JS ファイルを作成します。次に、その 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");

http://jsfiddle.net/HackedByChinese/tRMSj/

于 2012-10-29T23:11:15.827 に答える
1

Webサイトのクライアント側のルートを基準にしたパスを作成するには、スラッシュを追加します。

url: "/Client/Services/ForumOperationService.svc/GetTags"

注-ClientがIISExpressの仮想ディレクトリ/アプリケーションであり、インストール時にClientビットがない場合は、変更する必要があります。

于 2012-10-29T22:48:04.170 に答える