0

私の開発ボックスでは、サイトへの URL は「http://localhost:portname/home」であり、ログイン後に右上の「Hello」をクリックすると、パスは「localhost:/」になります。アカウント/GetTabContent/tab1"

次の jQuery コードを使用します。

var url = "/Account/GetTabContent/tab1";
var targetDiv = $('#div1');
$.get(url, null, function (result) {
  $(targetDiv).html(result);
});

これは私のボックスでうまくいきます。ただし、テスト サーバーにデプロイすると、実際の Web サイトのパスは次のようになります。

http://server name/website folder/home

ログイン後に名前をクリックしても、

http://server name/Account/GetTabContent/tab1

404エラーが発生します。強制的に移動するにはどうすればよいですか

http://server name/website folder/GetTabContent/tab1

私の質問が理にかなっていることを願っています。そうでない場合はお知らせください。明確にします

** * *編集* ****

OK、次のコードを変更して問題を修正しました(URLからコントローラー名を削除しました。別のコントローラーのアクションを呼び出すときにこれがどのようになるか疑問に思います)

**var url = "GetTabContent/tab1";**
var targetDiv = $('#div1');
$.get(url, null, function (result) {
$(targetDiv).html(result);
});
4

2 に答える 2

1

通常、Url ヘルパーを使用してパスを設定することをお勧めします。そのため、上記のコードでは代わりに次のようにします。


var url = '@Url.Action("GetTabContent", "Account", new { id = "tab1" })';
var targetDiv = $('#div1');
$.get(url, null, function (result) {
  $(targetDiv).html(result);
});

URL が受け入れられる場所 (スクリプト タグなど) では、チルダを使用して URL を指定します。たとえば、次のようになります。


<script src="~/Scripts/foo.js"></script>

(これはMVC 4を想定していますが、タグ付けされているので、これは公平だと思いました:))

展開時に変更する可能性のある場所への相対パスまたは最悪の絶対パスを指定する代わりに。

于 2012-05-12T05:01:04.287 に答える
0

私は多くのフレームワークで同じ問題を抱えています。私の解決策は、フォームのアクションを目的の場所に設定することです.mvcは通常echo Form:open('action');、絶対パスを追い出すのと同様のものを使用するため、これはphpフレームワーク上にあることに注意してください.しかし、idはaspが似たようなものを提供すると仮定しているので、私のjqueryで使用します

$.post($(this).attr('action'), $(this).serialize(), function and so on
于 2012-05-08T15:50:55.583 に答える