如何使用AJAX调用将视图返回到新的/单独的浏览器窗口

时间:2013-05-08 03:16:49

标签: asp.net-mvc jquery asp.net-mvc-4

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 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);
    }
});

答案 2 :(得分:1)

你不需要在这里使用ajax。你需要打开一个新窗口,所以你只需要触发这个

window.open('/ActionName/InitializeEditView??filterValue='+searchValue)

答案 3 :(得分:-1)

如果您想要更新整个浏览器窗口,那不是AJAX帖子。

这是一个标准的HTML <FORM>帖子,将其更改为。

[被修改]

好的,您要打开单独的窗口。使用window.open()作为GET,或通过jQuery&amp;然后在成功时将HTML放入其中。