很抱歉出现基本问题,只是对这里发生的事情有点困惑。我在Wordpress中运行了一些PHP,我可以在一个文件中运行html、PHP和javascript。例如:
<?php
//query WP for the tag
$wp_getTag = $wpdb->get_results(
"
SELECT name
FROM $wpdb->mydb_wor1.ukj_terms
INNER JOIN ukj_term_taxonomy
ON (
ukj_terms.term_id = ukj_term_taxonomy.term_id
)
WHERE ukj_term_taxonomy.taxonomy LIKE 'post_tag'
"
);
$json = json_encode($wp_getTag);
?>
<script type="text/javascript">
// pass the value to js
var JsonTags = <?php echo $json ?>;
</script>
所以以上所有的方法都有效。我从wp中获取一些信息,然后使用echo将其值分配给JS变量。但目前还不清楚这里发生了什么?Javascript是在服务器上而不是在客户端上运行的吗?
否,JavaScript正在客户端上运行。PHP正在服务器上运行。也就是说,此代码在服务器上运行:
<?php echo $json ?>
对该代码的求值将导致一个字符串被发送到输出所在位置的客户端。因此,如果变量$json
包含字符串"{'value':'helloworld'}",则此代码将在客户端上运行:
var JsonTags = { 'value' : 'hello world' };
首先,所有的服务器端代码都会运行,这最终会导致对客户端的响应。一旦客户端接收到该响应,所有客户端代码都会运行。
服务器将信息输出到客户端,因此函数名为"echo"(它从服务器回声到客户端)。
您可以将服务器端代码混合到客户端代码中,因为它首先由服务器处理,这就是为什么您不能(如果不使用Ajax)使用Javascript来实现服务器端代码的原因。