Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载基于自定义序列化数据生成的文件_Javascript_Jquery_Post - Fatal编程技术网

Javascript 下载基于自定义序列化数据生成的文件

Javascript 下载基于自定义序列化数据生成的文件,javascript,jquery,post,Javascript,Jquery,Post,我正在尝试根据jqgrid中的复选框生成pdf。我将表单数据中的信息发布到MVC控制器,并从复选框中添加一些自定义序列化数据,然后控制器返回一个文件 data: $("#filter_form").serialize() +"&"+ $.param({"s" : items}), 当我使用jquery发布数据时,但我无法将成功数据返回到浏览器以保存文件。有太多的数据添加到url,但当我这样做时,我成功地下载了文件。例如,它工作得很好,但由于url中的数据量,它不是一个解决方案 我希望

我正在尝试根据jqgrid中的复选框生成pdf。我将表单数据中的信息发布到MVC控制器,并从复选框中添加一些自定义序列化数据,然后控制器返回一个文件

 data: $("#filter_form").serialize() +"&"+ $.param({"s" : items}),
当我使用jquery发布数据时,但我无法将成功数据返回到浏览器以保存文件。有太多的数据添加到url,但当我这样做时,我成功地下载了文件。例如,它工作得很好,但由于url中的数据量,它不是一个解决方案

我希望我可以使用一个普通的表单post,但是由于我正在从复选框手动序列化一些数据,所以我能够想出如何动态地将数据添加到表单post

最坏的解决方案:我将数据发布到控制器,然后控制器将返回一个临时URL或密钥。然后我可以打开一个带有临时url的新窗口,或者让用户单击它的url。我希望有一个更快的解决办法


我是javascript世界的新手。所以我希望有一个我错过的简单解决方案。它必须与IE 7兼容

这是可行的,但不知道这是否是最好的解决方案

MVC4控制器动作

    //temp store the data because of the custom serialization. Its not possible
    //for ajax post to save file and we cant do it the normal way due to the checkboxes
    [Authorize]
    public void GenerateReport(ContractMaterialFiltersViewModel filters)
    {
        Session["filter"] = filters;
    }

    [Authorize]
    public FileStreamResult Report()
    {
        ContractMaterialFiltersViewModel filters = Session["filter"] as ContractMaterialFiltersViewModel;
        if (filters == null) new Exception("No request data");

   ....
   }
现在来看Javascript方面

             //store the filters
        $.ajax({
            type: "GET",
            url:  '<%= Url.Action( "GenerateReport", "GovContractMaterial" ) %>',
            data: $("#filter_form").serialize() +"&"+ $.param({"s" : items}),
            success: function (data) {
                //request file based on stored filters
                ifrm.src = '<%= Url.Action( "Report", "GovContractMaterial" ) %>';
            },
            error: function(request,error) 
            {
                alert ( "Error: " + error );
            }
        });
//存储过滤器
$.ajax({
键入:“获取”,
url:“”,
数据:$(“#过滤器形式”).serialize()+”&“+$.param({“s”:items}),
成功:功能(数据){
//基于存储筛选器的请求文件
ifrm.src='';
},
错误:函数(请求、错误)
{
警报(“错误:+错误”);
}
});
。要向表单添加数据,为什么不使用隐藏的