Визуализирайте видеоклипове в div с помощта на Jquery, WordPress oEmbed & Ajax

Аз съм сравнително нов в 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' );

Благодаря за всяка помощ, която можете да ми окажете, оценявам я много!

// Йенс.


person jenseo    schedule 11.12.2014    source източник


Отговори (1)


Опитвате се да локализирате несъществуващ скрипт с манипулатора function. От останалата част от кода ви става ясно, че сте насочени към general. Не сте сигурни защо се свързвате с template_redirect за локализиране, просто добавете частта за локализация след опашката:

add_action( 'wp_enqueue_scripts', 'lets_add_scripts' );
function lets_add_scripts() {
    wp_register_script( 'general', get_bloginfo( 'template_directory' ) . '/js/general.js', array( 'jquery' ),'', false );
    wp_enqueue_script( 'general' );
    wp_localize_script( 'general', 'display_videos', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
person diggy    schedule 11.12.2014
comment
Освен това във вашето обратно извикване на ajax трябва да работите с $_POST['url'] вместо $_POST['link'] - person diggy; 11.12.2014
comment
Благодаря много @diggy, това напълно свърши работа! Благодаря, че помогнахте на объркан начинаещ като мен! :) - person jenseo; 12.12.2014