这是设计: 1)在index.html上 - 客户端将ajax调用作为所选数据集 2)processor.php - 创建mysql查询生成的数据的新csv文件 3)index.html回调 - 使d3.js从csv文件中获取数据集并生成图形 4)重复步骤1到3 - 不允许d3获取最新的csv文件
我可以在第一次进行AJAX调用时通过d3检索CSV文件,但是,之后来自客户端的Ajax调用不允许d3检索最新文件。,代码不会获取最新文件
所以这是index.html
$.post( 'processor.php',
$("#queryform :input").serializeArray(),
function(data) {
d3.csv('diagrams/chord.csv', function (error, data) {
var mpr = chordMpr(data);
mpr
.addValuesToMap('chimp')
.setFilter(function (row, a, b) {
return (row.chimp === a.name && row.performedon === b.name)
})
.setAccessor(function (recs, a, b) {
if (!recs[0]) return 0;
return +recs[0].count;
});
sliderbanimate()
drawChords(mpr.getMatrix(), mpr.getMap());
});
这只是部分代码,但我想要实现的是在Ajax调用期间,我希望d3插件使用最新的CSV文件
这里是processor.php - 在AJAX调用
上创建一个从MYSQL创建的新CSV文件 $chordquery = mysqli_query($connection, 'SELECT a.CName as CName, a.Performed_on as performed_on,Count(*) as Count
FROM behavior a WHERE
BName IN ('.$behaviourarry.') GROUP BY CName, performed_on');
$num = 0;
while($resultchord = mysqli_fetch_array($chordquery)) {
$rel[$num]['chimp'] = $resultchord['CName'];
$rel[$num]['performedon'] = $resultchord['performed_on'];
$rel[$num]['count'] = $resultchord['Count'];
$num++;
//$data2[] = $row3['CName'];
//echo $row3['CName']."-".$row3['performed_on']."-".$row3['BName']."-".$row3['Year']."-".$row3['Count']."<br/>";
}
$output = fopen("diagrams/chord.csv",'w') or die("Can't open php://output");
//header("Content-Type:application/csv");
//header("Content-Disposition:attachment;filename=pressurecsv.csv");
fputcsv($output, array('chimp','performedon','count'));
foreach($rel as $relation) {
fputcsv($output, $relation);
}
fclose($output) or die("Can't close php://output");
真的希望有人可以帮助我...欢呼!
答案 0 :(得分:0)
开发/调试时,如果您的数据存储在文件中,那么您就是 要多次加载该文件。您的浏览器很快就会使用 缓存版本,每次都不重新加载。这很棒 速度,但如果您将文件编辑为您的文件,则不是很好 调试过程:更改将被忽略!通过添加哈希和 你是文件名末尾的随机字符串 有效地告诉您的浏览器从其他人那里获取您的文件 url,虽然它是同一个文件。它的作用是它会 强制您的浏览器每次重新加载文件。一旦你开心 使用文件的形状,你可以停止这样做(通过省略 刷新参数),浏览器可能会使用您的缓存版本 文件。
- jeromecukier.net