0

最近まで、ホストされた Web サイトで正常に動作していた ajax 呼び出しがあります。

このように定義

$.ajax({
        url: 'GetItemsForCountry',
        type: 'GET',
        data: "country=" + country,
        success: function (items) {
            $("#Items").empty();
            $("#Items").attr("disabled", false)
            $.each(items, function (i, c) {
                $("#Items").append($('<option></option>').val(c.Value).html(c.Text))
            }
                  );
        })

VSでローカルにデバッグしようとすると、正常に動作し、コントローラーを回線上で渡していることがわかります...

http://localhost:9000/Home/GetItemsForCountry?country=USA

ホストされたサーバーでそれを実行すると、次のように渡されます

http://servername/GetItemsForCountry?country=USA.  

以前はこれを行っていませんでした。

誰かが理由を知っていますか?または、これを MapRoute して 404 エラーが発生しないようにする方法を知っていますか?

助けてくれてありがとう。

デビッド

4

2 に答える 2

0

これはあなたが使用している相対 URL であるため、現在のパスが何であれ使用されます。URLなので、homeデフォルトルートも使用していると思います。サーバーテストがのルートURLに行くのに対し、ローカルホストのテストはhttp://localhost:28347/home/index単にルートURLの代わりに行くようです/。これに対抗する1つの方法は、

$.ajax({
    url: '@Url.RouteUrl(new { controller = "Home", action= "GetItemsForCountry"})',
    type: 'GET',
    data: "country=" + country,
    success: function (items) {
        $("#Items").empty();
        $("#Items").attr("disabled", false)
        $.each(items, 
            function (i, c) {
                $("#Items").append($('<option></option>').val(c.Value).html(c.Text))
            }
        );
})

これにより、通話に関係なくルートが解決されます。

于 2012-09-19T00:47:34.180 に答える
0

URL を変更する/home/getitemsforcountryと、サーバー上およびローカルで機能します。を使用Getitemsforcountryするだけで、あなたがいるサイトの現在の「領域」にそれを追加しようとします.

于 2012-09-19T02:07:42.597 に答える