Бродячий персонаж в ответе Ajax? - PullRequest
5 голосов
/ 27 мая 2011

Я использую WordPress. Я делаю вызов ajax с jQuery, PHP выводит объект JSON, но в ответ, который я получаю в javascript, в конце добавляется «0», что приводит к сбою декодирования объекта json.

PHP:

function newspaper_getpost() {
    $d = array('foo' => 'bar', 'baz' => 'long');
    echo json_encode($d);
}
add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');

JS:

  $.post(MyAjax.ajaxurl,{
        action : 'newspaper_getpost',
        postID : $(this).val()
        }, function(response) {
              console.log(response);
  });

Выход:

{"foo":"bar","baz":"long"}0

Я пытался

echo substr( json_encode($d), 0, -1);

и получил

{"foo":"bar","baz":"long"0

поэтому я уверен, что это не сторона PHP. Я мог бы просто сбросить «0» в конце ответа, но я чувствую, что происходит нечто большее, и я не хочу делать дешевый хак, чтобы это сработало. JQuery 1.6.1 кстати. Спасибо!

Ответы [ 3 ]

4 голосов
/ 27 мая 2011

Очевидно, что 0 полностью не связан с этим фрагментом javascript. Вы можете видеть, что вы убрали последний символ ответа, и он удалил }, но 0 остается. Вам нужно взглянуть на оставшуюся часть вашего PHP / HTML, так как где-то выводится случайный символ.

Если вы добавите exit (); сразу после эха вы увидите, что 0 исчезнет.

0 голосов
/ 27 мая 2011

Это означает, что есть что-то эхо после / внутри вашего add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost'); php кода. Посмотрите на print_r (), echo или что-то подобное.

0 голосов
/ 27 мая 2011

Попробуйте это

function newspaper_getpost() {
    $d = array('foo' => 'bar', 'baz' => 'long');
    die(json_encode($d));
}
add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...