你好,我刚刚开始学习有关laravel和后端开发的一般知识,目前正在从事构建Crud系统的项目,我正在尝试通过连接ajax函数中的datatable更新数据表中的图像行。图像名称作为我的api的参数,并将其全部包装在字符串中,如下所示:
var newRow = $datatable.row.add([data.id, data.name, "<img id='pic' src='{{url('api/img',['foldername',"+data.img+"])}}' style='width:500; height:500'/>"]).draw().node()
我希望图像列上的输出类似于:
<img id='pic' src='http://localhost:8000/api/img/foldername/imagename.jpg' style='width:500; height:500'/>
但是我却得到了:
<img id='pic' src='http://localhost:8000/api/img/foldername/%2Bdata.img%2B' style='width:500; height:500 />
我的api路由类似于:
Route::get('image/{foldername}/{filename}','ImageController@getImage');
有人对此问题有任何解释吗?我在这里做错了什么?
答案 0 :(得分:0)
两件事(我假设这是在刀片文件中):
1)您在]
辅助方法中有一个额外的方括号url()
。文件夹和文件名都应位于数组内部,如下所示。您还需要注意交替使用单引号和双引号。
url('api/img', ['foldername', 'filename'])
2)呈现url的刀片PHP在服务器上运行javascript之前先在服务器上运行。由于JS赋予data.img
其值,因此PHP不知道它应该是什么,这就是为什么它将其解释为字符串“ + data.img +”,并带有转义的URL字符({{ 1}})。
相反,您可以做的是在PHP中使用占位符创建一个url,然后在知道它们的含义后在JS中用真实值替换占位符。
%2b