读取文本文件然后获取内容并显示到表yii2

时间:2015-11-04 06:08:55

标签: javascript json yii2

这是我表格下面的javascript

$('#idOfButton').click(function(){
var id = $('#input').val(); 
    $.get('index.php?r=tbltime/get-file',{ id : id },function(data){
        var data = $.parseJSON(data);
        alert(data);
    });
});

这是我controller的观点:

public function actionGetFile($id)
{
    $id = file_get_contents($id);
    echo Json::encode($id);

}

我的表单视图中的table

<table id="sampleTbl", class="table table-striped table-bordered">
    <thead>
        <tr id="myRow">
            <th>BIB</th>
            <th>Time Start</th>
            <th>Time End</th>
        </tr> 
    </thead>
    <tbody></tbody>
</table>

我的text file

202#00:00:00.000000#00:02:13.045000
764#00:03:12.037300#00:04:12.123000
223#00:04:50.011000#00:05:12.045000

我想要的是在浏览文本文件然后显示到表格时获取内容?当我尝试使用警报来显示我的内容文件时,它不起作用。有人帮忙??

2 个答案:

答案 0 :(得分:1)

功能file_get_contents显然无法读取您的文件,因为您的文件在C:\fakepath\dataimport.txt中不可用。如果要在磁盘D:/上读取文件,则必须提供文件目录file_get_contents('FULL PATH TO THE FILE DIRECTORY'.$id)的完整路径。请注意,这种方法并不好,因为您正在对脚本中的值进行硬编码。如果将此代码从本地计算机移动到服务器,则可能会出现无效的情况。

如果要从磁盘C:\读取文件,请将文件从磁盘D:\复制到C:\fakepath\dataimport.txt

在行回显Json::encode($id);之后的控制器中放置行Yii::app()->end();,因为您不想在此操作中呈现任何视图文件。

<强>更新

有三种可能的情况。

第一种情况 第一种情况是,您要在表中显示的文件是您知道的文件,这意味着这不是您的客户上传的文件。在这种情况下,将文件复制并粘贴到项目文件夹中,只提供相对路径,并且函数将能够读取。即使将项目部署到其他服务器,这也始终有效。

第二种情况 其他情况是该文件将来自最终用户。在这种情况下,您必须首先使用PHP上载文件,然后将文件内容发送到Ajax脚本。

第三种情况 使用JavaScript读取文件的内容并在视图中显示它。以下是一个示例:http://www.aspsnippets.com/Articles/Read-Parse-and-display-CSV-Text-file-using-JavaScript-jQuery-and-HTML5.aspx

答案 1 :(得分:0)

警报显示时发生了什么?什么是ajax get请求的响应代码?如果有错误请将它们粘贴在这里。

编辑: 也许,在您的输入中,从您获取文件名的位置,仅存在文件名,而不是文件的完整路径。因此,您应该通过向file_get_contents方法添加路径前缀来修改您的操作:

public function actionGetFile($id)
{
    $fileContent= file_get_contents('D:/'.$id);
    echo Json::encode($fileContent);
    Yii::app()->end();

}