使用json_encode发送html,最后返回“null”字符串

时间:2012-04-08 15:03:58

标签: php jquery ajax json wordpress

我使用它来加载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字符上的空字符串,但似乎并非如此。我也试过使用utf8_encode()但没有成功。我已经在SO上阅读了一堆其他问题,但是他们中的大多数要么谈论一个给定的值作为null或坏的UTF-8编码返回,在我的情况下,everthing只是起作用,然后追加" null& #34;到最后。

注意:在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
}

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

nav_me_paises()不会返回任何内容。将此“无”传递给json_encode()会产生"null"。转换函数,使其返回HTML而不是输出它

function foo()
{
};

var_dump(json_encode(foo()));
string(4) "null"

答案 2 :(得分:0)

另外,如果它只是简单的HTML,为什么json呢?只需将它发送给JS,它就是一个存储在变量中的字符串,你可以正常处理它。

我认为你想做的就是将HTML放在某个div中,因为你不会将它解析成DOM并处理它的元素......因为如果你这样做,你就不会使用HTML。