0

次のようにサーバー側コントローラーアクションへのPOSTへのjQuery.ajax呼び出しを使用するASP.NetMVC3アプリケーションがあります

クライアント側のjQuery呼び出し:

//Page the server
        $.ajax({
                url: '/Home/Call_Abort',
                type: 'POST',
                data: "{ 'op_id': '" + ajaxOPID + "', 'statMsg': '" + ajaxStatMsg + "'}",
                contentType: 'application/json; charset=utf-8',
                success: function (data) {
                        window.location.href = data.redirectUrl;
                },
                error: function (xhr, ajaxOptions, thrownError) {
                        alert("Error while paging the server to abort.  Reported error: '" + xhr.responseText + "'.");
                }
        });

サーバー-コントローラーのアクション:

[HttpPost]
public JsonResult Call_Abort(string op_id, string statMsg)
{
    return Json(new
    {
        redirectUrl = Url.Action("Operator_Home", "Home", new { op_id = op_id, status = statMsg }),
        isRedirect = true
    });

}

戻りURLは、ユーザーを別のビュー(つまり、Operator_Homeビュー)にリダイレクトすることになっています。これはローカル開発PCで機能し、期待どおりにOperator_Homeビューにルーティングされますが、開発Webサーバー(IIS7を搭載したServer2008)で実行すると、xhr.responseTextの結果として次の404エラーページがスローされます。上記の.ajax呼び出しで。

ここに画像の説明を入力してください

何が起こっているのかは、 redirectURLで指定したビュー(つまりOperator_Home)にリダイレクトする代わりに、Call_AbortコントローラーアクションがCall_Abortビューを返すことになっているようです。そのようなビューが存在しないため、以下のエラーが発生します。しかし、なぜこれがVisual Studio開発サーバーを実行しているローカルPCではなく、Webサーバーで発生するのでしょうか。開発マシンでの動作と同じように動作させるために、IISでアプリケーションを調整する必要がある設定はありますか。MVCルーティングについての私の理解は、これが発生している理由を知るのに十分なほど明確ではありません。どんな助けや洞察も大歓迎です。

アップデート

申し訳ありませんが、職場で使用しているサーバーがいくつかあります。間違ったWebサーバーを参照していました。これを実行しているサーバーは、IIS7を搭載したServer2008です。

ここに画像の説明を入力してください

4

1 に答える 1

0

エラーは、.Ajax呼び出しのURLに問題があることが判明しました。URLを次のように変更しました。

//Page the server
var abortURL = window.location.origin + '/myApp/Home/Call_Abort';
        $.ajax({
                url: abortURL,
                type: 'POST',
                data: "{ 'op_id': '" + ajaxOPID + "', 'statMsg': '" + ajaxStatMsg + "'}",
                contentType: 'application/json; charset=utf-8',
                success: function (data) {
                        window.location.href = data.redirectUrl;
                },
                error: function (xhr, ajaxOptions, thrownError) {
                        alert("Error while paging the server to abort.  Reported error: '" + xhr.responseText + "'.");
                }
        });

これにより問題が解決し、jQueryがPOSTを完了できるようになりました。

于 2012-04-25T23:24:45.187 に答える