wordpress ajax错误:无法发布元数据

时间:2015-12-06 08:41:38

标签: php jquery ajax wordpress

可能有一个简单的解决方案,但我正在努力解决这个问题。

我一直在使用wordpress插件来打印帖子(这里的帖子类型是woocommerce product)元数据在页面上,用户将有一个输入文本字段来触发产品页面中的功能。我在这里使用AJAX将输入数据发送到我的wordpress函数。

问题是,当我使用一些模拟的垃圾数据测试代码时,它运行正常,但是当我使用get_post_meta调用post meta时代码没有发送任何数据。 如果我们通过AJAX调用post meta,有什么可以应用吗?我在下面分享我的代码。

wordpress中的代码:

add_action('init', 'timeslot_ajax_handle');

function timeslot_ajax_handle() {
    wp_register_script("timeslot_ajax_script", um_product_url . 'assets/js/timeslot_ajax.js', array('jquery'));
    wp_localize_script('timeslot_ajax_script', 'myAjax', array('ajaxurl' => admin_url('admin-ajax.php')));
    wp_enqueue_script('jquery');
    wp_enqueue_script('timeslot_ajax_script');
}

add_action("wp_ajax_timeslot_ajax_submit", "timeslot_ajax_submit");
add_action("wp_ajax_nopriv_timeslot_ajax_submit", "timeslot_ajax_submit");

function timeslot_ajax_submit() {
    //function to process ajax requests from product page
    if (!wp_verify_nonce($_REQUEST['nonce'], "submitted_date")) {
        exit("An error occured");
    }
    global $wpdb, $post, $product, $woocommerce;
    $product_id = $_REQUEST["post_id"];
    $bookdate = $_REQUEST["bookdate"];
    $result['type'] = "success";
    $result['result_text'] = get_post_meta($product_id, '_total_sales', true);

    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
        $result = json_encode($result);
        echo $result;
    } else {
        header("Location: " . $_SERVER["HTTP_REFERER"]);
    }

    die();
}

AJAX代码:

jQuery(document).ready( function() {

    jQuery("#datepicker_input").change( function() {
        jQuery('#day_timeslots_list').css('display', 'none');
        jQuery('#fountainH').css('display', 'block');

        var bookdate = jQuery('#dp_input').val();
        // alert(bookdate);
        post_id = jQuery(this).attr("data-post_id");
        nonce = jQuery(this).attr("data-nonce");

        jQuery.ajax({
            type : "post",
            dataType : "json",
            url : myAjax.ajaxurl,
            data : {action: "timeslot_ajax_submit", post_id : post_id, nonce: nonce, bookdate: bookdate},
            success: function(response) {
                if(response.type === "success") {
                    jQuery('#fountainH').css('display', 'none');
                    jQuery('#day_timeslots_list').css('display',     'block');
                    jQuery("#timeslot_active").html(response.result_text);
                } else {
                    alert("There is an error");
                }
            }
        }); 

        jQuery('#fountainH').css('display', 'block');
    });
});

0 个答案:

没有答案