将CSV数据呈现为HTML

时间:2012-11-18 20:22:33

标签: jquery csv relative-path absolute-path laravel

我正在尝试使用jquery文件上传插件获取jquery csv到表插件(请参阅http://code.google.com/p/jquerycsvtotable/)。它支持上传CSV文件,并在成功上传(使用JQuery File上传)后立即将其呈现为同一页面上的HTML。当我按照下面的示例设置$ filePath时,这可以正常工作。但是,我希望将此值作为隐藏字段传递,并使用.attr方法检索它。但是当我这样做时,CSV到表似乎没有正确呈现,并且页面似乎与loadingImage挂起(更新仍然有效),并且' loadComplete'函数未执行(根据下面示例中的警告)。

我可以按照以下方式工作(参见粗体行):

    }).bind('fileuploadcompleted', function (e, data) {        
        var $filename = $.trim($('#fileupload td.name').text());
        **var $filePath = 'bundles/jqueryfileupload/users/';
        //var $filepath = $('#upload_path_id').attr('value');**
        $.get($filePath + $filename, function(data) {
            $('#CSVSource').html('<pre>' + data + '</pre>');
        });
        $('#CSVTable').CSVToTable($filePath + $filename,{
          loadingImage: 'bundles/jqueryfileupload/img/loading-table.gif',
          startLine: 0 }             
        ).bind("loadComplete",function() {
              alert('load complete!');
              $('button.btn.import').removeClass('disabled').addClass('ready');
              $('div.alert.alert-info').show();
        });

知道如何解决这个问题吗?

更新:看起来这个问题是存在的,因为我正在检索一个绝对路径,而这是因为ajax调用将csv呈现为HTML而失败。我使用Laravel并更新了paths.php文件以包含以下条目:

// --------------------------------------------------------------
// The path to the storage/users directory.
// --------------------------------------------------------------
$paths['user_files'] = 'storage/users';

然后在我的视图文件中,我将文件路径作为隐藏字段传递,如下所示:

<input type="hidden" id="upload_path_id" name="upload_path" value={{ path('user_files') }}>

所以我的问题是,如果我在我的机器上本地使用Laravel和Xampp有没有办法让ajax作为相对路径或其他方式使用?我上面使用的文件夹是Laravel的一部分(即&#39;存储&#39;),并且位于公共目录之上。

对此的任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:3)

在IRC上聊天我有支持建议创建一个到控制器(php)的路由,该路由器可以访问存储目录并以这种方式检索文件内容。

所以代替当前的php - &gt; js - &gt; js场景我会有以下内容: php(查看) - &gt; js(make ajax call) - &gt; php(控制器) - &gt;获得存储路径 - &gt; php(控制器)(执行文件获取内容) - &gt; js(将结果呈现为HTML)