2013-08-02 41 views
0

對不起,基本問題,只是有點困惑,這是怎麼回事。 我有一些PHP在Wordpress中運行,我可以在一個文件內運行html,php和javascript。例如:javascript內部php wordpress

<?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?

+1

除非您使用Node.js(並且您不是),否則JavaScript始終在客戶端運行。你在這裏做的是使用PHP來查詢數據庫,然後將這些信息編碼爲JSON,然後從該JSON創建一個JavaScript對象。這使您可以訪問客戶端的信息(使用JavaScript),而不必每次需要查詢服務器時查詢返回的任何信息。 – cernunnos

+1

要添加到@cernunnos所說的內容,PHP和數據庫查詢部分發生在服務器上,並且它構建了一個HTML頁面,其中包含一些嵌入式JavaScript。然後將這個HTML頁面發送到客戶端瀏覽器,然後用戶看到帶有數據庫結果的JavaScript已經神奇地出現了(它不知道PHP爲它查詢數據庫並將它回顯到最終的HTML頁面以發送到瀏覽器)。 – ajp15243

+0

謝謝您對此的幫助,但尚不清楚,但現在是! – Bwyss

回答

3

不,JavaScript正在客戶端上運行。 PHP正在服務器上運行。即,該代碼在服務器上運行:

<?php echo $json ?> 

在一個字符串,碼結果的評估被髮射到客戶端,在輸出的該位置。所以,如果變量$json包含字符串「{‘值’:‘你好世界’}」:

var JsonTags = { 'value' : 'hello world' }; 

首先在服務器端代碼運行,這最終導致那麼這個代碼將然後在客戶端上運行在迴應客戶。一旦客戶端收到響應,所有客戶端代碼都會運行。

0

服務器正在將信息輸出到客戶端,因此函數名稱爲'echo'(它從服務器回顯到客戶端)。

因爲服務器首先處理服務器端代碼,所以您可以將服務器端代碼混合到客戶端代碼中,這就是爲什麼您不能使用Javascript(不使用Ajax)效果服務器端代碼。