2012-03-17 21 views
0

私は配列を作成し、それをWordpress投稿のタイトルと内容で埋めるjavascript関数を持っています。言い換えれば、私はget_the_content()get_the_title()の結果をループを使ってjavascrip配列に入れて、別のdivに表示しようとしています。 問題は、get_the_content()の結果がdivに表示されないことです。 get_the_excerpt()やget_the_title()のようなものではなく、javascript変数に正しく格納され、onclickイベント後divに正しく表示されます。get_the_content()の結果が正しく表示されない

コード:事前

答えて

1

あなたは正しくなく、コンテンツのため、タイトルに引用符を追加している中

<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]; 
      } 

} 

感謝。結果を試してみると、ほぼ確実にJavaScriptエラーが発生します。

また、コンテンツ文字列に引用符が含まれていないことを確認すると、エラーが発生する可能性があります(また、コンテンツがどこにあるかによってXSSベクタを構成する可能性があります)。これを行う最も簡単な方法は、JSONエンコーディング機能を使用することです。

+0

素早く答えてくれてありがとう先のとがったが、引用符の問題が修正されたが、問題STI:/このようにjQueryを介して、dispalyed残ります。私は今、JSONとその使い方を学んでいます。そうでない場合、他のアドバイスはありますか? –

+0

もう一度手伝ってください、それはとても貴重です。上記の私の答えをチェックしてください。 –

+0

過去に私はこれを投票するのに十分なrepuを持っていませんでした。ありがとうございます、 –

0

私はPointyの答えに基づいて完全な解決策を見つけました。 JSONにワードプレスの投稿データを符号化するために、それは2つのコードのうちの1つを介して行うことができる。

<?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文字列を与えます

<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

関連する問題