php callback добавление дополнительных 0? - PullRequest
1 голос
/ 10 марта 2010

Я пытаюсь написать простой плагин Wordpress, который обновляет значение настраиваемого поля и увеличивает его на единицу, а затем выводит результат, который возвращается в мой код JavaScript. По некоторым причинам к данным, возвращаемым функцией обратного вызова, всегда добавляется дополнительный 0 в конце.

function like_post_callback() {
    $clicked = $_POST['clickedOn'];
    $id = $_POST['postID'];
    if($clicked == 0) $key = "like";
    else $key = "reallyLike";

    $prevLikes = get_post_meta($id, $key, true); //true, so we only return a single value
    $likes = 1;
    if($prevLikes == ""){
        add_post_meta($id, $key, $likes);
    } else{
        $likes = $prevLikes + 1;
        update_post_meta($id, $key, $likes);
    }

    echo $likes;
}

А вот как это называется:

$.post("<?php bloginfo( 'wpurl' ); ?>/wp-admin/admin-ajax.php", 
{ action: "like_post", clickedOn: which, postID: "<?php the_ID(); ?>"}, function(data){
    alert(data);
    $("#" + clicked).html(text + " (" + data + ")");
});

Все работает, у меня просто почему-то есть лишние 0 в данных, и я не знаю, откуда они.

Ответы [ 2 ]

0 голосов
/ 10 марта 2010

admin-ajax всегда возвращает значение по умолчанию '0' в качестве выходного. Вы должны использовать die();, чтобы WordPress не вызывал функцию по умолчанию, которая возвращает ноль. die(); прекратит работу сценария, возвращая все, что вы повторили до этого.

0 голосов
/ 10 марта 2010

Мне нужно было добавить die(); в качестве последней строки в like_post_callback, потому что мне нужно было отобразить результат и остановить нормальное возвращаемое значение 0.

...