Аз съм сравнително нов в jQuery и Ajax и се сблъсках с проблем, когато се опитвах да използвам WordPress oEmbed с помощта на Ajax.
Това е, което имам във functions.php в момента:
function ajax_magic()
{
wp_localize_script( 'function', 'display_videos', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
function get_video_link()
{
echo wp_oembed_get($_POST['link']);
die();
}
add_action('template_redirect', 'ajax_magic');
add_action('wp_ajax_get_video_link', 'get_video_link');
Моят jQuery изглежда така:
function display_video(input,output)
{
var link = document.getElementById(input).value;
jQuery.ajax({
url: display_videos.ajaxurl,
type: 'POST',
data:{
action: 'get_video_link', // this is the function in your functions.php that will be triggered
url: link
},
success: function(data){
//Do something with the result from server
$('#'+output).html(data);
}
});
}
Опцията input е URL адресът към видеото, опцията output съдържа идентификатора на div, където трябва да бъде изведен резултатът от функцията ajax.
URL адресът на видеоклипа се извлича от поле на формуляр, когато щракнете върху бутон за визуализация (не върху бутона за изпращане).
В момента нищо не се случва, но не виждам никакви грешки в конзолата на Javascript.
Както казах, аз съм доста нов в това, така че може би съм пропуснал нещо много основно или нещо подобно.
Между другото, по този начин внедрявам файла с функции на javascript (general.js) вътре functions.php. Това работи, но може би трябва да го направя по друг начин, за да накарам Ajax да работи?
function lets_add_scripts() {
wp_register_script('general', get_bloginfo('template_directory') . '/js/general.js', array('jquery'),'', false);
wp_enqueue_script('general');
}
add_action( 'wp_enqueue_scripts', 'lets_add_scripts' );
Благодаря за всяка помощ, която можете да ми окажете, оценявам я много!
// Йенс.