0

jQuery:

$.ajax({
        type: 'POST',
        url: redirectToANewWindow,
        dataType: 'html',
        data: { filterValue: searchValue },
        success: function (result) {
            $('form').html(result);
        }
});

コントローラ:

[HttpPost]
public ActionResult InitializeEditView(string filterValue)
{
  //some code
  return PartialView("PartialForm", model);
}

これはうまくいきます。更新されたビューを返し、現在のページに貼り付けます。しかし、私が達成したいのは、コントローラーから渡された後、結果を新しい/別のブラウザーウィンドウにレンダリングする必要があることです。それ、どうやったら出来るの?

前もって感謝します!

4

4 に答える 4

4

現在、次のように記述して、AJAX 呼び出しを行い、受信したデータをフォーム要素に配置することにしました。

$('form').html(result);

AJAX 成功コールバックで。

AJAX を使用しないでください。必要な URL で新しいウィンドウを開くだけです。

window.open('http:// ... my web?param1=0&param2=1')

これには、コントローラ アクションを変更して GET リクエストを受け取り、完全なビューを返す必要があります。

[HttpGet]
public ActionResult InitializeEditView(string filterValue)
{
  //some code
  return View("PartialForm", model);
}
于 2013-05-08T03:20:05.777 に答える
4

あなたの質問が理解できたら、このフォームで新しいウィンドウを作成しますか? jquery を取り除き、この属性をフォームの html に追加するだけです。

target="_blank"

のように

<form action="/yourcontroller" method="post" target="_blank">
...
</form>

編集:次のように実行できます:

$.ajax({
    type: 'POST',
    url: redirectToANewWindow,
    dataType: 'html',
    data: { filterValue: searchValue },
    success: function (result) {
        var w = window.open();
        $(w.document.body).html(result);
    }
});
于 2013-05-08T03:22:08.113 に答える
1

ここでは ajax を使用する必要はありません。新しいウィンドウを開く必要があるため、これをトリガーするだけです。

window.open('/ActionName/InitializeEditView??filterValue='+searchValue)
于 2013-05-08T03:40:09.487 に答える
-1

ブラウザ ウィンドウ全体を更新する場合、これは AJAX の投稿ではありません。

これは標準の HTML<FORM>投稿です。それに変更します。

【編集済】

のウィンドウを開きます。window.open() を使用して GET として実行するか、jQuery を介して POST を実行し、成功したら HTML を挿入します。

于 2013-05-08T03:18:47.943 に答える