如何在Ajax调用中获取最新的csv文件?

时间:2014-11-19 05:30:48

标签: jquery html css ajax d3.js

这是设计: 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");

真的希望有人可以帮助我...欢呼!

1 个答案:

答案 0 :(得分:0)

  

开发/调试时,如果您的数据存储在文件中,那么您就是   要多次加载该文件。您的浏览器很快就会使用   缓存版本,每次都不重新加载。这很棒   速度,但如果您将文件编辑为您的文件,则不是很好   调试过程:更改将被忽略!通过添加哈希和   你是文件名末尾的随机字符串   有效地告诉您的浏览器从其他人那里获取您的文件   url,虽然它是同一个文件。它的作用是它会   强制您的浏览器每次重新加载文件。一旦你开心   使用文件的形状,你可以停止这样做(通过省略   刷新参数),浏览器可能会使用您的缓存版本   文件。

- jeromecukier.net