我正在编写一个必须使导出json文件充满数据的应用程序
我没有这台机器上的代码给你看,所以我要切入追逐
我有一个HTML表格和一个按钮
点击按钮由jQuery函数处理,该函数从表单中收集所需的数据并将其放入数组中
接下来发生的事情是AJAX POST请求
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});
});
答案 0 :(得分:0)
您需要设置标题:
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()
在标题方面究竟做了什么,但这应该有效。