1

これを使用してphp関数をロードし、プラグインでjavascriptに送信します。

function me_nav_query_submit() {

    $urlcall = nav_me_paises(); /* fetches a large html string */
    $response = json_encode($urlcall); /* encode to display using jQuery */

    //header( "Content-Type: application/json" );
    echo $response;

    exit;
}

を使用して、ページにhtmlを挿入します

function(response) {
    jQuery('#navcontainer').html(response);
}

結果の最後に「null」文字列が表示されることを除いて、すべて正常に動作します。

json_encode()ドキュメントでは、utf-8 以外の文字の null 文字列について説明していますが、そうではないようです。私も試してみましたutf8_encode()が、成功しませんでした。ここでSOに関する他の多くの質問を読みましたが、それらのほとんどは、nullまたは不正なUTF-8エンコーディングとして返された1つの値について話し、私の場合はすべてうまくいき、最後に「null」を追加します。

注: WP Codex では header() 呼び出しの定義が推奨されていますが、「ヘッダーは既に送信されました」というエラーが発生していたため、コメントしました。

何か案は?

編集これは呼び出される関数です:

function nav_me_paises() {
    ?>
   <ul class="navcategorias">
        <?php $tquery = $_POST['wasClicked']; ?>
        <?php $navligas = get_terms($tquery,'hide_empty=0') ?>
        <?php foreach ($navligas as $liga) : ?>
            <?php $link = get_term_link($liga); ?>
            <li class="liga"><a href="<?php echo $link; ?>" ><?php echo $liga->name; ?></a></li>
        <?php endforeach; ?>
    </ul>
    <?php
}
4

3 に答える 3

3

nav_me_paises()は何も返しません。htmlブロックは出力として扱われます!

function nav_me_paises() {
 $output = '<ul class="navcategorias">';
 $tquery = $_POST['wasClicked'];
 $navligas = get_terms($tquery,'hide_empty=0')
 foreach ($navligas as $liga) {
   $link = get_term_link($liga);
   $output .= '<li class="liga"><a href="'.$link.'" >'.$liga->name.'</a></li>';
  }
  $output .='</ul>';
  return $output;
}
于 2012-04-08T15:14:21.517 に答える
1

nav_me_paises()何も返しません。この「何もない」をにjson_encode()渡すと、が得られます"null"。出力する代わりにHTMLを返すように関数を変換します

function foo()
{
};

var_dump(json_encode(foo()));
string(4) "null"
于 2012-04-08T15:14:48.263 に答える
0

また、プレーンな HTML の場合、なぜ json なのですか? JSに送るだけで変数に格納された文字列になり、普通に扱えます。

あなたがしたいのは、そのHTMLをいくつかのdiv内に置くことだけだと思います.DOMに解析してその要素を処理しないからです...そうするなら、HTMLを使用しないからです。

于 2013-01-08T13:19:56.977 に答える