我正在尝试在使用 Ajax 加载新页面时更新 jQuery 变量。但由于某种原因,jQuery 变量仅在第一次调用时更新。
在我的functions.php中我有
function middleman_jquery() {
wp_enqueue_script( 'middleman', get_bloginfo( 'template_directory' ) . '/js/middleman.js', array( 'jquery' ), null, true );
global $my_playlist;
$m_data = array( 'playlist' => 'something' );
wp_localize_script( 'middleman', 'm_post_info', $m_data );
}
add_action( 'wp_enqueue_scripts', 'middleman_jquery' );
...我有我的 middleman.js
jQuery('#button').click(function() {
var msg = 'playlist: ' + m_post_info.playlist;
alert(msg);
});
在每个页面加载时,我都会加载我的 playlist.php 文件,如果我 print_r($m_data),它似乎可以正常工作。
<?php
global $playlist;
global $my_playlist;
global $wp_scripts;
?>
<?php while ( $playlist->have_posts() ) : $playlist->the_post();
$title = '"' . get_the_title() . '"';
$artist = '"' . rwmb_meta( 'artist_meta_artist' ) . '"';
$mp3_file = rwmb_meta( 'artist_meta_mp3', 'type=file' );
foreach ( $mp3_file as $mp3_array ) {
$mp3 = substr(var_export($mp3_array['url'], true), 1, -1);
}
$oga_file = rwmb_meta( 'artist_meta_oga', 'type=file' );
foreach ( $oga_file as $oga_array ) {
$oga = substr(var_export($oga_array['url'], true), 1, -1);
}
$my_playlist = $my_playlist .
'{' .
'title: ' . $title . ',' .
'artist: ' . $artist . ',' .
'mp3: "' . $mp3 . '",' .
'oga: "' . $oga . '",' .
'free: false, ' .
'},';
endwhile; ?>
<?php
$m_data = array( 'playlist' => $my_playlist );
wp_localize_script( 'middleman', 'm_post_info', $m_data );
?>
我究竟做错了什么?