首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Ajax调用中获取最新的csv文件?

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

Stack Overflow用户
提问于 2014-11-19 13:30:48
回答 1查看 318关注 0票数 0

设计如下: 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

代码语言:javascript
运行
复制
$.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 -创建一个新的CSV文件,该文件是通过AJAX调用的MYSQL创建的。

代码语言:javascript
运行
复制
            $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");

真的很希望有人能帮我摆脱here...cheers!

EN

回答 1

Stack Overflow用户

发布于 2014-11-19 21:16:18

在开发/调试时,如果您的数据存储在一个文件中,则需要多次加载该文件。很快,您的浏览器将使用缓存的版本,而不是每次都重新加载它。这对于速度来说很好,但是如果你将文件作为调试过程的一部分来编辑,那就不是那么好了:更改将被忽略!通过在文件名末尾添加散列和随机字符串,您可以有效地告诉您的浏览器从不同的url获取您的文件,尽管它是同一个文件。这样做的目的是每次都强制浏览器重新加载文件。一旦您对文件的形状感到满意,您就可以停止这样做(通过省略刷新参数),浏览器可能会使用您的文件的缓存版本。

--jeromecukier.net

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27009645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档