Javascript 在jquery中串联一个变量,返回文本变量名

Javascript 在jquery中串联一个变量,返回文本变量名,javascript,ajax,string,laravel,Javascript,Ajax,String,Laravel,您好,我刚刚开始学习laravel和后端开发,目前正在进行一个构建crud系统的项目,我正试图通过将保存图像名称作为参数的变量连接到api中,并将其全部封装在一个字符串中,从ajax函数内的datatable更新图像行,如下所示: var newRow = $datatable.row.add([data.id, data.name, "<img id='pic' src='{{url('api/img',['foldername',"+data.img+"])}}' style='wid

您好,我刚刚开始学习laravel和后端开发,目前正在进行一个构建crud系统的项目,我正试图通过将保存图像名称作为参数的变量连接到api中,并将其全部封装在一个字符串中,从ajax函数内的datatable更新图像行,如下所示:

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()
有人对这个问题有什么解释吗?我在这里做错了什么?

2件事(我假设这是在刀片文件中):

1) 在
url()
helper方法中有一个额外的结束方括号
]
。文件夹和文件名都应该在数组中,如下所示。您还需要注意交替使用单引号和双引号

url('api/img', ['foldername', 'filename'])
2) 呈现url的刀片式PHP在浏览器中运行javascript之前在服务器上运行。由于JS给了
data.img
它的值,PHP不知道它应该是什么,这就是为什么它将它解释为字符串“+data.img+”,带有URL的转义加号(
%2b

您可以做的是在PHP中创建一个带有占位符的url,然后在知道占位符是什么的情况下,在JS中用实际值替换占位符

// This will allow blade to create the url with placeholders in PHP, and it will be interpreted 
// as a string literal in JS and assigned to the variable placeholderUrl
var placeholderUrl = "{{ url('api/img', ['foldername', 'filename']) }}";

// Then you can use JS to replace the value in the url
var realUrl = placeholderUrl.replace('filename', data.img);

// Then use the real URL to create the img tag. Notice the alternating single and double quotes
var imgTag = '<img id="pic" src="' + realUrl + '" style="width:500; height:500" />';

// And finally, use the img tag when you add the row
var newRow = $datatable.row.add([data.id, data.name, imgTag]).draw().node();
//这将允许blade在PHP中创建带有占位符的url,并对其进行解释
//作为JS中的字符串文本,并分配给变量占位符URL
var placeholder url=“{url('api/img',['foldername','filename'])}”;
//然后可以使用JS替换url中的值
var realUrl=placeholderUrl.replace('filename',data.img);
//然后使用真实的URL创建img标记。注意交替的单引号和双引号
var imgTag=“”;
//最后,在添加行时使用img标记
var newRow=$datatable.row.add([data.id,data.name,imgTag]).draw().node();
2件事(我假设这是在刀片文件中):

1) 在
url()
helper方法中有一个额外的结束方括号
]
。文件夹和文件名都应该在数组中,如下所示。您还需要注意交替使用单引号和双引号

url('api/img', ['foldername', 'filename'])
2) 呈现url的刀片式PHP在浏览器中运行javascript之前在服务器上运行。由于JS给了
data.img
它的值,PHP不知道它应该是什么,这就是为什么它将它解释为字符串“+data.img+”,带有URL的转义加号(
%2b

您可以做的是在PHP中创建一个带有占位符的url,然后在知道占位符是什么的情况下,在JS中用实际值替换占位符

// This will allow blade to create the url with placeholders in PHP, and it will be interpreted 
// as a string literal in JS and assigned to the variable placeholderUrl
var placeholderUrl = "{{ url('api/img', ['foldername', 'filename']) }}";

// Then you can use JS to replace the value in the url
var realUrl = placeholderUrl.replace('filename', data.img);

// Then use the real URL to create the img tag. Notice the alternating single and double quotes
var imgTag = '<img id="pic" src="' + realUrl + '" style="width:500; height:500" />';

// And finally, use the img tag when you add the row
var newRow = $datatable.row.add([data.id, data.name, imgTag]).draw().node();
//这将允许blade在PHP中创建带有占位符的url,并对其进行解释
//作为JS中的字符串文本,并分配给变量占位符URL
var placeholder url=“{url('api/img',['foldername','filename'])}”;
//然后可以使用JS替换url中的值
var realUrl=placeholderUrl.replace('filename',data.img);
//然后使用真实的URL创建img标记。注意交替的单引号和双引号
var imgTag=“”;
//最后,在添加行时使用img标记
var newRow=$datatable.row.add([data.id,data.name,imgTag]).draw().node();

尝试将其更改为
'“+data.img+”
@Tushar它将变成
尝试将其更改为
'“+data.img+”
@Tushar它将变成
当我尝试创建“占位符URL”时,脚本将字符串作为对api的直接调用读取,因此,它返回类似于
意外的“foldername”
的错误,我到目前为止所做的是,在控制器上创建blade php字符串url,并在那里连接图像名称,然后在json响应中返回
data.image
,它有点工作,但是当我将其添加到datatable中时,php刀片字符串没有加载,它返回的结果如下:
好吧,我弄明白了,替换为我做的相同变量上的占位符`var realurl=“{{url(…)}}”。替换('filename',data.image);,感谢您的帮助@newusername2当我尝试创建“占位符URL”时,脚本读取字符串作为对api的直接调用,因此它返回类似于
意外的“foldername”
的错误,到目前为止我所做的是,我在控制器上创建了blade php字符串url,并在那里连接了图像名称,并在json响应中作为
数据返回。image
,它可以正常工作,但当我将其添加到datatable时,php blade字符串不会加载,而是按如下方式返回
好吧,我明白了,替换为我所做的相同变量上的占位符`var realurl=“{url(…)}}”.replace('filename',data.image);,谢谢@newUserName02的帮助
// This will allow blade to create the url with placeholders in PHP, and it will be interpreted 
// as a string literal in JS and assigned to the variable placeholderUrl
var placeholderUrl = "{{ url('api/img', ['foldername', 'filename']) }}";

// Then you can use JS to replace the value in the url
var realUrl = placeholderUrl.replace('filename', data.img);

// Then use the real URL to create the img tag. Notice the alternating single and double quotes
var imgTag = '<img id="pic" src="' + realUrl + '" style="width:500; height:500" />';

// And finally, use the img tag when you add the row
var newRow = $datatable.row.add([data.id, data.name, imgTag]).draw().node();