如何在 jQuery 或 JS 中使用 Laravel URL::asset

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/39894158/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 14:34:37  来源:igfitidea点击:

How to use Laravel URL::asset in jQuery or JS

javascriptjquerylaravel

提问by Tomasz

I'd like to use URL::asset to pass url to javascript instead of direct url

我想使用 URL::asset 将 url 传递给 javascript 而不是直接 url

$("select#lang").css("background-image", 'url(http://pascha.org/img/' + $("select#lang").val() + '.png)');

I'd like do something like this:

我想做这样的事情:

$("select#lang").css("background-image", '{{ URL::asset('/images/flags/') }}' + $("select#lang").val() + '.png)');

but this of course doesn't work and question is how it should be look if is is possoble at all.

但这当然行不通,问题是它应该如何看是否可能。

回答by haakym

Why doesn't this work?

为什么这不起作用?

$("select#lang").css("background-image",
  '{{ URL::asset('/images/flags/') }}' + $("select#lang").val() + '.png)');

The only reason it wouldn't work is if you're doing this outside of your blade file and in a separate JS file. Unless I've missed something?

它不起作用的唯一原因是如果您在刀片文件之外和单独的 JS 文件中执行此操作。除非我错过了什么?

If you do have a separate JS file, you could assign some "global" variables in the blade file before your JS file is declared in your markup.

如果你有一个单独的 JS 文件,你可以在你的 JS 文件在你的标记中声明之前在刀片文件中分配一些“全局”变量。

For example:

例如:

<script>
    // "global" vars, built using blade
    var flagsUrl = '{{ URL::asset('/images/flags/') }}';
</script>
<script src="your-js-file.js"></script>

Then in your-js-file.js, you can do this:

然后在your-js-file.js 中,你可以这样做:

$("select#lang").css("background-image",
  flagsUrl + $("select#lang").val() + '.png)');

回答by Komal

Try like this

像这样尝试

 $("select#lang").css("background-image", 'url(/images/flags/'+ $("select#lang").val() + '.png)');

回答by flipjms

It doesn't work because your javascript file (something.js) is not parsed by PHP. Meaning, PHP doesn't check javascript files for php code.

它不起作用,因为您的 javascript 文件 (something.js) 没有被 PHP 解析。意思是,PHP 不会检查 javascript 文件中的 php 代码。

Although you can pass variables between them. The simplest way is to do something like this in your view (blade file):

虽然你可以在它们之间传递变量。最简单的方法是在您的视图(刀片文件)中执行以下操作:

<script type="text/javascript">
    var url = '{{ URL::asset('/images/flags/') }}'
</script>

In your javascript, you now have a global variable called urlwith the value you are looking for and you can use it in you javascript file:

在您的 javascript 中,您现在有一个url使用您要查找的值调用的全局变量,您可以在您的 javascript 文件中使用它:

$("select#lang").css("background-image", url + $("select#lang").val() + '.png)');

回答by ice thailand

If you paste image to folder public/images/abc.png You can use

如果您将图像粘贴到文件夹 public/images/abc.png 您可以使用

'/images/'

'/图片/'

instead of

代替

{{ URL::asset('/images') }}

{{ URL::asset('/images') }}

in your js file.

在你的 js 文件中。

Example in .blade :

.blade 中的示例:

<img src="{{ URL::asset('/images') }}/abc.png" />

in .js :

在 .js 中:

var image = "<img src='/images/abc.png' />";