Javascript 读取文本文件,然后获取内容并显示到表yii2
这是我的Javascript 读取文本文件,然后获取内容并显示到表yii2,javascript,json,yii2,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); }); }); 这是我的控制器,供我查看: public
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);
});
});
这是我的控制器
,供我查看:
public function actionGetFile($id)
{
$id = file_get_contents($id);
echo Json::encode($id);
}
我的表格
在我的表单视图中:
<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>
我想要的是在浏览文本文件时获取内容,然后显示在表中??当我尝试使用alert显示我的内容文件时,它不起作用。有人帮忙吗???当您的警报显示时发生了什么?ajax get请求的响应代码是什么?如果有错误,请将其粘贴到此处 编辑: 很可能,在您的输入中,从哪里获得文件名,只有文件名存在,而不是文件的完整路径。因此,您应该通过将路径前缀添加到
file\u get\u contents
方法来修改您的操作:
public function actionGetFile($id)
{
$fileContent= file_get_contents('D:/'.$id);
echo Json::encode($fileContent);
Yii::app()->end();
}
函数
file\u get\u contents
显然无法读取您的文件,因为您的文件在C:\fakepath\dataimport.txt
中不可用。如果要读取磁盘上的文件D://
,则必须提供文件目录file\u get\u内容的完整路径(“文件目录的完整路径”。$id)
。请注意,这种方法并不好,因为您正在对脚本中的值进行硬编码。如果将此代码从本地计算机移动到服务器,则可能会出现某些问题
如果要从磁盘C:\
读取文件,请将文件从磁盘D:\复制到C:\fakepath\dataimport.txt
在控制器的echoJson::encode($id)行之后代码>放线Yii::app()->end()代码>因为您不想在此操作中渲染任何视图文件
更新
有三种可能的情况
第一个场景
第一种情况是,要在表中显示的文件是您知道的文件,这意味着这不是客户上载的文件。在这种情况下,将文件复制并粘贴到项目文件夹中,只需提供文件的相对路径,该函数就可以读取。即使您将项目部署到其他服务器上,这也将始终有效
第二种情况
另一种情况是,文件将来自最终用户。在这种情况下,您必须首先使用PHP上传文件,然后将文件内容发送到Ajax脚本
第三种情况
使用JavaScript读取文件内容并在视图中显示。这里有一个例子:eror for reponsePHP警告';yii\base\ErrorException';带有消息';文件获取内容(C:\fakepath\dataimport.txt):无法打开流:没有这样的文件或目录'代码>驱动器D中的我的文件:dataimport.txt,但此错误获取驱动器C。我不知道如何获取完整路径,当我使用类似于此的表单时选择文件
??感谢您在第三个场景中提供链接,请帮助我@mrD
public function actionGetFile($id)
{
$fileContent= file_get_contents('D:/'.$id);
echo Json::encode($fileContent);
Yii::app()->end();
}