微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript-为什么我无法通过Ajax获得WP自定义字段值或帖子ID?

我写了一个基于访问者位置生成链接代码,它工作得很好,但是我发现生成代码被缓存了,因为我使用的是整页缓存,因此尽管可以解决该问题,但我可以使用Ajax来加载该链接.我使用下面的代码获取一些我需要的变量(例如位置变量和链接域变量等)时效果很好.但是,我无法获取WooCommerce自定义字段数据,甚至无法返回产品ID.

我正在使用此代码获取自定义字段,该字段在直接在函数中使用时效果很好,但是无法在ajax中工作

$uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );

我在functions.PHP中使用了该代码

add_action( 'woocommerce_before_add_to_cart_button', 'affiliate_link_ajax', 11);
function affiliate_link_ajax() {    
?>
<script>
jQuery(document).ready(function(){

             jQuery.ajax({
                url: "<?PHP echo admin_url('admin-ajax.PHP'); ?>",
                type: 'POST',
                data: {
                action: 'getmyfunctionform1'
                },
                dataType: 'html',
                success: function(response) {

                jQuery("#myResultsform1").html(response);

                }

        }); 
    });
</script> 
<!-- end Ajax call to getmyfunctionform1 smc 11-22-2013 -->

<div id="myResultsform1"></div>
<?PHP
}

以及funnctions.PHP中的这段代码

// Ajax Function to Load PHP Function myfunctionform1 smc 11/22/2013

add_action('wp_ajax_getmyfunctionform1', 'myfunctionform1');
add_action('wp_ajax_nopriv_getmyfunctionform1', 'myfunctionform1');

function myfunctionform1() { 
    $uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );
echo $uk_asin;
// Whatever PHP and or html you want outputed by the ajax call in template file

die(); } // important must use

// end Ajax Function to Load PHP Function myfunctionform1 smc 11/22/2013

如果答案很简单,我将不胜感激,因为我还是编码新手

解决方法:

将您的帖子ID传递给您的AJAX请求:

data: {
    action: 'getmyfunctionform1',
    postId: <?PHP echo get_post()->ID; ?>
}

然后在回调函数中使用它来获取元值:

function myfunctionform1() { 
    $postId = filter_input( INPUT_POST, 'postId', FILTER_SANITIZE_NUMBER_INT );
    $uk_asin = get_post_meta( $postId, "wccaf_uk_asin", true );
    // etc.
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐