我想用ajax加载我的模板,但我正在努力(根本没有工作),主要是用PHP猜测。我试图得到任何模板是正确的,使用ID获取模板slug,但似乎没有工作。
到目前为止,这是我的代码:
function theme_js() {
wp_enqueue_script( 'ajaxstuff', get_template_directory_uri() . '/js/ajax.js', array('jquery'), '', true );
wp_localize_script( 'ajaxstuff', 'ajaxify', array(
'ajaxurl' => admin_url( 'admin-ajax.php' )
));
}
add_action( 'wp_enqueue_scripts', 'theme_js' );
add_action( 'wp_ajax_nopriv_ajax_submit', 'my_ajax_submit' );
add_action( 'wp_ajax_ajax_submit', 'my_ajax_submit' );
function my_ajax_submit() {
$pageUrl = $_REQUEST['URL'];
$postid = url_to_postid( $pageUrl );
$post = get_post($postid);
$pageSlug = get_page_template_slug($postid);
if ($post) {
setup_postdata($post);
get_template_part( $pageSlug );
}
exit();
}
我的JS:
(function($){
$('body').on('click', 'a', function(e) {
e.preventDefault();
var URL = $(this).attr('href');
animationFunction();
var ajaxPromise = $.ajax({
url: ajaxify.ajaxurl,
type: "post",
data: {
action: 'my_ajax_submit',
url: URL
},
dataType: "html"
});
var animationPromise = animationFunction();
$.when(ajaxPromise, animationPromise).done(function(data) {
$('#page-wrap').html(data[0]);
TweenMax.to('.page', 0.35, { alpha: 1 });
});
});
function animationFunction() {
var deferred = $.Deferred();
TweenMax.to('.page', 0.35, { alpha: 0, onComplete: deferred.resolve });
return deferred.promise();
}
})(jQuery);
答案 0 :(得分:0)
$pageUrl = $_REQUEST['URL'];
$_REQUEST
包含关联数组,数组索引区分大小写,因此:
$pageUrl = $_REQUEST['url'];