我的网站上有画廊的加载 gif。在我的 js 文件中,我有这段代码来显示加载器:
image: $("<img src='images/loading.gif'/>"),
目前这个图像没有出现,因为我没有放置完整的图像路径。但与其放置完整的图像路径,我更愿意这样做:
<img src="<?php bloginfo('url');?>/images/loading.gif”>
但我不知道如何让这个 php 在我的 js 文件中工作。我该如何以最简单的方式进行操作?
我的网站上有画廊的加载 gif。在我的 js 文件中,我有这段代码来显示加载器:
image: $("<img src='images/loading.gif'/>"),
目前这个图像没有出现,因为我没有放置完整的图像路径。但与其放置完整的图像路径,我更愿意这样做:
<img src="<?php bloginfo('url');?>/images/loading.gif”>
但我不知道如何让这个 php 在我的 js 文件中工作。我该如何以最简单的方式进行操作?
我更喜欢..
1)在我的标头包含(包含任何 <head> 数据的 php 包含)中,编写一个小的内联 JS 函数,该函数创建一个包含我需要从服务器(PHP)获得的任何变量的全局对象。我可以在这里使用 'echo' 和 'json_encode' 函数,因为它位于 php 文件的内联 JS 片段中。
2)你可以在你的JS文件中编写一个JS函数,使用AJAX调用一个PHP文件,它将返回与数字1相同的JSON编码数据,然后你解析它并分配给一个全局变量。
两者基本上都做同样的事情,除了 2 您使用的是 AJAX,这将添加一个额外的请求。我更喜欢选项 1,因为它是与页面执行一起完成的。选项 2 可能需要您等到 DOM 准备好,这取决于您的程序的各个方面(我无法确定)。
选项 1 需要内联 JS,但您真的不应该对此大谈特谈,因为对于动态网站,它实际上可能是一个加分项,因为它简短而简洁。有些人对内联 JS 有所了解。不要让他们对你大喊大叫。
我不完全确定您要做什么。但是如果那个 JS 不工作,为什么不包含一个 php 文件,或者只是在标题中写一些 php,在 'echo()' 中包含其中的 JS。IE:
echo('?><img src="<?php bloginfo('url');?>/images/loading.gif" /><?php');
如果我误解了您的意图,请纠正我。
您不能将 PHP 代码直接放入 .js 文件中,但您可以在包含 javascript 文件之前在 PHP 文件的 head 元素中添加一些 javascript。
在这个 javascript 中,您可以使用 PHP 定义变量并为它们分配数据。然后可以从 javascript 文件内部访问这些变量。
<head>
<script type='text/javascript'>
var _g_bloginfo = "<?php echo '...'; ?>";
</script>
<script type='text/javascript' src='javascript.js'></script>
</head>
将 PHP 数据传递给 JavaScript 的一种更简洁的技术是将数据存储在数据属性中,然后您可以通过 JavaScript 访问这些属性。举个简单的例子:
<body data-home-url="<?php echo home_url(); ?>">
您可以像这样在 jQuery 中访问它:
var home = $('body').attr('data-home-url');
仅供参考,您可以使用json_encode将 PHP 对象/数组转换为 JSON 对象,您可以通过$.parseJSON或JSON.parse读取这些对象。WP 的wp_localize_script实际上可以为您执行此操作,但请注意,在这种情况下,它会将转换后的数据公开给window。
您可以创建一个 php 文件(而不是您的 js 文件,其中包含您在该 js 文件中已有的所有代码 + 对您的 php 变量/函数的引用)并将其包含在您的主 php 文件中。
<?php $example = 23; ?>
<html>
<head><title></title>
<script type="text/javascript">
<?php include('js.php'); ?>
</script>
</head>
<body></body>
</html>
var a = <?= $example ?>;
alert(a);
<html>
<head><title></title>
<script type="text/javascript">
var a = 23;
alert(a);
</script>
</head>
<body></body>
</html>