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 回答