2012-03-17 132 views
0

我有一個javascript函數,它創建一個數組,並用Wordpress文章的標題和內容填充它。換句話說,我嘗試使用循環將get_the_content()get_the_title()的結果放入javascrip數組中,並將它們顯示在單獨的div中。 問題是,get_the_content()的結果不會出現在div中。不像get_the_excerpt()或get_the_title(),它們都正確存儲在javascript變量中,並在onclick事件後正確顯示在div中。get_the_content()沒有正確顯示的結果

代碼:

<script type="text/javascript"> 

function initialize(str) { 

<? echo 'var topics = [';?> 
<?php if (have_posts()) : ?> 
<?php while (have_posts()) : the_post(); ?>  

<?php $title=get_the_title();?> 

<?php 
echo "['"; 
echo $title; 
echo "',"; 
$content=get_the_content(); 
echo $content; 
echo "],"; ?> 

<?php endwhile; ?> 
<?php endif; ?> 

<?php echo '];'; ?> 

for (i = 0; i < topics.length; i++) 
{ 
if(topics[i][0]==str) { 
document.getElementById("id").innerHTML = locationsmee[i][1]; 
      } 

} 

在此先感謝

回答

1

你正確添加報價爲標題,而不是內容。當您嘗試結果時幾乎肯定會發生JavaScript錯誤。

您應該確保內容字符串不包含引號,因爲這也會導致錯誤(並構成可能的XSS向量,具體取決於內容的來源)。最簡單的方法是使用JSON編碼工具。

+0

謝謝Pointy爲快速的答案,報價問題已糾正,但問題sti我會保持。我現在正在嘗試瞭解JSON以及如何使用它。如果沒有,還有其他建議嗎? – 2012-03-17 21:30:43

+0

請再次幫助我,這將是如此寶貴。上面檢查我的答案。 – 2012-03-25 13:38:11

+0

在過去,我沒有足夠的repu來投票。謝謝 – 2013-04-01 02:19:49

0

我發現基於Pointy答案的完整解決方案。

<?php 
header('Content-Type: text/html; charset: UTF-8'); 
require('../English/The-Blog/wp-load.php'); 

query_posts(array('posts_per_page' => 20,)); 

$jsonpost = array(); 
$i=0; 
if (have_posts()) : 
while (have_posts()) : the_post(); 


    $jsonpost[$i]["id"] = get_the_ID(); 
    $jsonpost[$i]["title"] = get_the_title(); 
    $jsonpost[$i]["url"] = apply_filters('the_permalink', get_permalink()); 
    $jsonpost[$i]["content"] = apply_filters('the_content', get_the_content()); 


    $jsonpost[$i]["date"] = get_the_time('d F Y'); 
    $i=$i+1; 
endwhile; 
endif; 

header('Content-type: application/json;'); 
echo json_encode($jsonpost); 
?> 

OR

<?php 


define('WP_USE_THEMES', false); 
require('../English/The-Blog/wp-blog-header.php'); 

$posts = get_posts(array(
     'numberposts' => 5, 
     'offset' => 0, 
     'orderby' => 'post_date', 
     'order' => 'DESC', 
     'post_type' => 'post', 
     'post_status' => 'publish' 
     )); 
$json = array(); 


if ($posts) { 
    foreach ($posts as $post) { 
     $ray = array(); 
     the_post(); 
     $ray['id'] = $post->ID; 
     $ray['date'] = $post->post_date; 
     $ray['contents'] = $post->post_content; 
     $ray['title'] = $post->post_title; 
     $json['posts'][] = $ray; 

    } 
} 
header('Content-type: application/json;'); 
echo json_encode($json); 
?> 

這兩個碼的給予可接JSON字符串:以編碼的wordpress帖子數據到JSON,它可以通過兩個碼中的一個來進行/顯示通過像這樣的jQuery:

<script> 
jQuery(document).ready(function($){ 
    $(".load").click(function(){ 

     $.getJSON(
      'phpscript.php', 
      function(data){ 
         $('#9lessonsLinks').hide(); 
        for (var i=0 ; i < data.length ; i++) 
      { 
        var personne = data[i]; 

     var div_data ="<div class='box'><a>"+personne.url+"</a></div>"; 

     $(div_data).appendTo("#9lessonsLinks"); 


          } 



      $('#9lessonsLinks').fadeIn(); 

      } 
     ); 
    }); 
}); 

</script> 
+1

你的數據看起來像是一個**數組**。您必須遍歷數組中的項目。 – Pointy 2012-03-25 14:09:22