ajax中的动态网址

时间:2015-05-20 08:07:56

标签: php ajax csv

我尝试从data.csv

绘制图表
$(document).ready(function () {

    $.ajax({
        type: "GET",
        url: "data.csv",
        dataType: "text",
        success: function(data) {processData(data);}
    });

完整的HTML代码为here

但是我必须使用用户给定的参数创建data.csv。我正在通过表格获取方法。

<form action="/test.php" >
<input type="text" name="starttime" placeholder="starttime " >

在我的php脚本中,我使用

$time=$_GET['starttime'];
shell_exec("bash myscript.sh $time > data.csv");

我打算用这个新创建的csv制作图表。但是我无法

  1. 提供动态网址,即与shell脚本创建的文件名相同。此外,有可能在服务器上生成许多文件,有没有办法干净利落地完成。
  2. 让php调用图表并显示图表

1 个答案:

答案 0 :(得分:0)

您应调用一个PHP文件来代替调用data.csv文件,该文件将呈现您的新CSV文件。

HTML:

<form id="yourForm">
<input type="text" name="starttime" placeholder="starttime " >
</form>

Javascript:

$('#yourForm').on('submit', function(event){
    event.preventDefault();
    var $form = $(this);

    $.ajax({
        type: "GET",
        url: "last-csv-file.php?starttime="+$form.find('input[name="starttime"]').val(),
        dataType: "text",
        success: function(data) {processData(data);}
    });
});

last-csv-file.php

$time=$_GET['starttime'];

// Write the CSV in a temporary file
$tmpFileName = tempnam('/tmp', 'a-prefix-of-your-choice');
shell_exec("bash myscript.sh $time > $tmpFileName");

// Get the content of your tmp CSV file and remove it
$csvContent = file_get_contents($tmpFileName);
unlink($tmpFileName);

// Display that content with the proper mimetype
header('content-type: text/csv');
echo $content;
exit;

请注意以下事项:该行可能存在严重的安全问题shell_exec("bash myscript.sh $time > data.csv");如果用户在字段中输入类似内容的话,那么&#34;&amp;&amp; rm -Rf ./" (或任何类型的命令)它可能会破坏您的服务器。您应该始终检查starttime是否包含日期,而不是其他任何内容。