AJAXをサポートするIIS5
-
25-10-2019 - |
質問
私はvs2010、asp.net mvc 2プロジェクトで働いています。プロジェクトは完了しましたが、IISで明らかにされるべきですが、問題は発生します。コントローラーメソッドを呼び出すAJAX要求は、IISでは機能しませんが、vsで動作します。 AJAXのIISサポートのために特に何かを含めるべきかどうかはわかりませんか?私は助けが必要です、そして、リクエストを転送する方法とURLはパラメーターを使用したMVC要求として解釈されますか? IIS 5を使用しています。
解決
あなたはあなたのJavaScriptのURLをハードコードしました、あなたはそうではありません:
$.post('/home/index', function(result) {
});
URLヘルパーを使用する代わりに:
$.post('<%= Url.Action("index", "home") %>', function(result) {
});
IISにアプリケーションを展開したときにコードが機能しない理由は、次のような仮想ディレクトリを持っているからです。 http://example.com/myapplication/home/index
. 。 URLヘルパーを使用して生成する代わりにURLのハードコードを作成すると、 http://example.com/home/index
もちろん、アプリケーション名が欠落しているため、これは機能しません。
地元で作業するとき、Visual Studioの組み込みWebサーバーを使用している場合、Virtual Directoryはありません。URLは次のようになります。 http://locahost:1234/home/index
.
個人的に私がお勧めするのは、HTMLヘルパーを使用して、ようなDOM要素を生成することです <form>
と <a>
そして、それらを控えめに無作法にします。
たとえば、次の形式を持つことができます。
<% using (Html.BeginForm("SomeAction", "SomeController")) { %>
... some input fields
<% } %>
あなたはこのようにajaxifyすることができます:
$(function() {
$('form').submit(function() {
$.post(this.action, $(this).serialize(), function(result) {
// TODO: process the results
});
return false;
});
});
JavaScriptファイルのURLをハードコードしていない方法をご覧ください。これで、アプリケーションをホストする場所に関係なく、すべてが機能します。