使用php脚本创建的AJAX返回文件

时间:2017-08-11 12:00:40

标签: javascript php jquery ajax

我正在尝试为我的表实现excel导出功能。我正在使用ajax发送表单数据,php脚本使用此数据创建文件,然后什么也没有。我想ajax返回用php创建的文件。这是我的代码。

    public static string ConvertCSVToXML(string filePath, char seperator)
    {
        var lines = File.ReadAllLines(filePath);
        var headers = lines[0].Split(seperator);
        XElement xml = new XElement("RootElement",
                            lines.Select(line => new XElement("Item",
                                line.Split(seperator).Select((column, index) => 
                                   new XElement(headers[index], column))
                            ))
                        );
        return xml.ToString();
    }

我的php功能

$('body').on('click', '#excel', function() {        
    var veri = $('form[method="get"]').serializeArray();
    veri['action'] = 'userexcel';
    jQuery.ajax({
           type: "POST",
           url: <?php echo '"' . admin_url( 'admin-ajax.php' ) . '"';?>,
           data: veri,
           success: function(data){
               alert(data); 
           }
        });
    return false;
});

1 个答案:

答案 0 :(得分:1)

代代码工作得很好,但是,如果你想强制浏览器下载该文件,你有两个选择。

创建本地文件

您必须将该文件实际保存在服务器上的某个位置,然后将链接返回给它,然后通过在成功调用AJAX后更改window.location.href = "<url_of_xls_file>"来启动下载。

直接将表单发布到 AJAX调用

现在,如果您不想在服务器上创建文件,那么您必须摆脱方法,更改您的表单{{ 1}}属性action并在表单中手动添加admin_url( 'admin-ajax.php' ) 操作。

您可以让浏览器使用这两种方法弹出下载对话框。