在jquery中连接变量而不是返回文字变量名称

时间:2019-07-05 01:27:42

标签: javascript ajax string laravel

你好,我刚刚开始学习有关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');

有人对此问题有任何解释吗?我在这里做错了什么?

1 个答案:

答案 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