3

選択フィールドが変更されたら、メタデータを返そうとしています。ただし、以下のコードを何度か繰り返しましたが、php スクリプトからエコーするだけで問題なく動作しますが、応答として返そうとすると失敗します。単純に「echo 'xxxx'」と指示すると機能するため、関数が確実に実行されていることがわかります。以下は、私が実装しようとしているコードです。私は完全に困惑しており、単に何かを見落としていることを願っています...

add_action('admin_footer', 'get_criteria_javascript');

function get_criteria_javascript() {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
    if(jQuery('select#pages').length > 0) {
        jQuery('select#pages').live('change', function() {
            var selected = jQuery(this).val();
            var data = { action: 'get_criteria', post_id: selected };

            jQuery.ajax({
                type: 'post',
                dataType: 'html',
                url: 'admin-ajax.php',
                data: {action: 'get_criteria', post_id : selected },
                success: function(response) {
                    alert(response);
                }
            });
        });
    }
});
</script>
<?php
}

add_action('wp_ajax_get_criteria', 'get_criteria_callback');

// if I use echo get_criteria_callback(627); here, it returns the expected results... 

function get_criteria_callback($post_id) {
    $meta = get_post_meta($post_id, 'criteria');
    $content = implode(', ', $meta[0]); 
/* This is one version. Although I can echo it fine, if I return this as a response, it tells me my implode is using invalid arguments */

    echo $content;
    die();
 }
4

1 に答える 1