JavaScript中的PHP和转义


PHP in JavaScript and escaping

我正在使用Laravel,并且正在发出AJAX请求。在成功事件中,我写道:

var name = response.filename;
var path = "<?php echo route('getImage', "name")?>";                        
document.getElementsByClassName("getImage")[0].setAttribute("src", path);

但在第二行中,name变量似乎被解释为文本,而不是变量。src的值是

http://localhost/bluedrive/drive/public/getimage/name;

我怎么能做到这一点?

假设javascript在您的刀片模板中,您可以执行以下操作。

var name = response.filename;
var path = "{{ route('getImage', ['image_name']) }}";
document.getElementsByClassName("getImage")[0].setAttribute("src", path.replace('image_name', name));

不过,我认为您最好的选择是在ajax响应中返回完整的图像src。所以你的控制器可能看起来像这个

Input::file('image')->move('/my/filepath', $filename);
return response()->json([
    'image_url' => url('/my/filepath/' . $filename),
]);

这将返回图像的url,然后您可以在javascript中使用该url,如下所示

.success(function(response) {
    document.getElementsByClassName("getImage")[0].setAttribute("src", response.image_url);
});