2015-10-23 2 views
-1

У меня проблема с использованием jquery ajax. У меня уже есть js-плеер, который отлично работает без ajax. И.Е.jQuery ajax успешно проходит во внешнюю переменную

/jwplayer.js

window.onload = function() { 

function etc etc etc 

jwplayer('player').setup({ 
playlist: [{ 
file: video_url, 
}], 
width: "640", 
height: "380", 
autostart: "true", 
stretching: "exactfit", 
volume: "100", 
}); 
} 

PHP страница

<script type="text/javascript" src="/jwplayer.js"></script> 
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 

<div id='player'></div> 

<script type="text/javascript"> 
var video_url = some_website_dot_com/file/.m3u8 
</script> 

Это работает просто отлично. Но я не могу добавить функцию ajax к var video_url. Это скрипт, который я пытаюсь сделать его работу

<script type='text/javascript'> 
var video_url = function() { 
$.ajax({ 
    type: 'get', 
    url: "some_website_dot_com/file/.m3u8", 
    dataType: "html", 
    success: function (data) { 
     var result = data.match(/(http\:\/\/\S+m3u8)/); 
     return result[1]; 
    } 
}); 
}(); 
</script> 
+0

Почему у вас есть extra '()' после последнего '}'? – jgabb

+0

Да, это невозможно. –

+0

@jgabb был кодом, который я нашел здесь, http://stackoverflow.com/questions/16805306/jquery-return-ajax-result-into-outside-variable Однако он не работает ни без '()' – Avel

ответ

2

Вы пытаетесь вернуть что-то из внутренней функции, почему бы просто не сделать это?

var video_url; 
$.ajax({ 
    type: 'get', 
    url: "some_website_dot_com/file/.m3u8", 
    dataType: "html", 
    success: function (data) { 
     var result = data.match(/(http\:\/\/\S+m3u8)/); 
     video_url = result[1]; 
    } 
}); 

Update: чтобы ваш плеер создан и работает, когда вы получите URL:

function setupVideo(data) { 
    var result = data.match(/(http\:\/\/\S+m3u8)/); 
    var video_url = result[1]; 
    jwplayer('player').setup({ 
     playlist: [{ 
      file: video_url, 
     }], 
     width: "640", 
     height: "380", 
     autostart: "true", 
     stretching: "exactfit", 
     volume: "100", 
    }); 
} 

$.ajax({ 
    type: 'get', 
    url: "some_website_dot_com/file/.m3u8", 
    dataType: "html", 
    success: setupVideo 
}); 

Хорошо читать на AJAX и, в частности А для асинхронных: How do I return the response from an asynchronous call?

+0

Даже я не уверен, что это правильный способ использования ajax, но я пробовал раньше, и он не работает. – Avel

+0

Он работает для получения 'video_url', но я думаю, вы не знакомы с асинхронным? Я обновляю свой ответ. – Shanoor

+0

Я обновил свой вопрос, разместив файл jwplayer.js в точности так, как он есть. – Avel

Смежные вопросы