6

MVC ビューで AJAX POST を実行したいと考えています。私は次のように書いています。

ビュー内のスクリプト コード

$('#media-search').click(function () {
    var data = { key: $('#search-query').val() };

    $.ajax({
        type: 'POST',
        url: '/Builder/Search',
        data: JSON.stringify(data),
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            $('.builder').empty();
                alert("Key Passed Successfully!!!");
        }
    });
});

コントローラーコード

[HttpPost]
public ActionResult Search(string key)
{
    return RedirectToAction("Simple", new { key=key });
}

しかし、AJAX POST では302 found エラーが発生します

4

1 に答える 1

8

「302」応答コードはリダイレクトです。コントローラー アクションは明示的に を返しますがRedirectToAction、これは単純に 302 を返します。このリダイレクト命令は、ブラウザーによって直接ではなく、AJAX 呼び出しによって消費されるため、ブラウザーをリダイレクトする場合は、次の手順を実行する必要があります。

$.ajax({
     type: 'POST',
     url: '/Builder/Search',
     data: JSON.stringify(data),
     dataType: 'json',
     contentType: 'application/json; charset=utf-8',
     success: function (data) {
          if (data.redirect) {
              window.location.href = data.redirect;
          }
          $('.builder').empty();
          alert("Key Passed Successfully!!!");
     }
});

そうでない場合は、コントローラーからのリダイレクト命令よりも意味のあるものを返す必要があります。

于 2013-04-20T10:08:09.480 に答える