2

我的网站上有画廊的加载 gif。在我的 js 文件中,我有这段代码来显示加载器:

image: $("<img src='images/loading.gif'/>"),

目前这个图像没有出现,因为我没有放置完整的图像路径。但与其放置完整的图像路径,我更愿意这样做:

<img src="<?php bloginfo('url');?>/images/loading.gif”&gt;

但我不知道如何让这个 php 在我的 js 文件中工作。我该如何以最简单的方式进行操作?

4

5 回答 5

1

我更喜欢..

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 有所了解。不要让他们对你大喊大叫。

于 2012-11-08T00:56:47.833 回答
0

我不完全确定您要做什么。但是如果那个 JS 不工作,为什么不包含一个 php 文件,或者只是在标题中写一些 php,在 'echo()' 中包含其中的 JS。IE:

 echo('?><img src="<?php bloginfo('url');?>/images/loading.gif" /><?php');

如果我误解了您的意图,请纠正我。

于 2012-11-08T00:56:29.623 回答
0

您不能将 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>
于 2012-11-08T01:00:25.763 回答
0

将 PHP 数据传递给 JavaScript 的一种更简洁的技术是将数据存储在数据属性中,然后您可以通过 JavaScript 访问这些属性。举个简单的例子:

<body data-home-url="<?php echo home_url(); ?>">

您可以像这样在 jQuery 中访问它:

var home = $('body').attr('data-home-url');

仅供参考,您可以使用json_encode将 PHP 对象/数组转换为 JSON 对象,您可以通过$.parseJSONJSON.parse读取这些对象。WP 的wp_localize_script实际上可以为您执行此操作,但请注意,在这种情况下,它会将转换后的数据公开给window

于 2012-11-08T01:25:26.003 回答
0

您可以创建一个 php 文件(而不是您的 js 文件,其中包含您在该 js 文件中已有的所有代码 + 对您的 php 变量/函数的引用)并将其包含在您的主 php 文件中。

示例 html:

<?php $example = 23; ?>
<html>
<head><title></title>
<script type="text/javascript">
<?php include('js.php'); ?>
</script>
</head>
<body></body>
</html>

js.php:

var a = <?= $example ?>;
alert(a);

最终会输出:


<html>
<head><title></title>
<script type="text/javascript">
    var a = 23;
    alert(a);
</script>
</head>
<body></body>
</html>
于 2012-11-08T01:44:47.497 回答