【问题标题】:jQuery AJAX post data and get filejQuery AJAX 发布数据并获取文件
【发布时间】:2013-08-28 04:12:33
【问题描述】:

我正在编写一个应用程序,它必须使导出的 json 文件充满数据。
我没有这台机器上的代码给你看,所以我要切入正题。
我有一个 HTML 表格和一个按钮。
单击按钮由 jQuery 函数处理,该函数从表单中收集所需的数据并将其放入数组中。

接下来发生的是 AJAX POST 请求。
帖子将数组发送到生成 json 文件的 PHP 方法。
我不想将文件保存到服务器,所以我手动设置标题以强制下载生成的文件。这意味着我没有指向该文件的任何物理链接。
问题是我没有得到任何下载对话框。我认为 jquery ajax 函数可以防止它。
如何获得下载对话框?

好的,这是一些代码...

PHP

public function GetFile() {
    foreach ($this->input->post("data") as $data) {
        $linesData = explode("@", $data);
        $modelsata = explode("@", $linesData[1]);
        $modData = explode("#", $data);
        $lines[$linesData[0]] = array(
            "model" => $modelsData[0], "mod" => $modData[1]
        );
    }
    force_download("export.json", json_encode($lines));
}

JS

$("button.export").click(function () {
    var dataArr = [];
    $.each($("tr.data"), function (index, element) {
        dataArr.push($(element).data("rowid")
            + "@" + $(element).find("select[name='model']").val()
            + "#" + $(element).find("select[name='mod']").val()
        );
    });
    $.post("http://localhost/index.php/AJAX/GetFile", {data: dataArr});
});

【问题讨论】:

  • 如果您没有可用的代码,请不要提问
  • 为什么?我详细解释了一切。你不能想象这种情况吗?
  • “在时机成熟之前,不会有酒。” – Orson Welles
  • 我可以想象一百万种情况的变化,这就是问题所在
  • 当您获取代码时编辑此问题

标签: php jquery ajax json codeigniter


【解决方案1】:

你需要设置标题:

public function download_json()
{

    $a = array(
        'test1' => 1,
        'test2' => 2,
        'test3' => 3
    );

    $data = json_encode($a);
    $filename = 'testjson';
    header('Content-Type: application/json');
    header('Content-Disposition: attachment; filename=' . $filename);
    echo $data;


}

user guide 并不清楚 force_download() 在标头方面究竟做了什么,但这应该可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    相关资源
    最近更新 更多