Я пытаюсь создать музыкальный проигрыватель в реальном времени с помощью pusher + php + jquery + ajax.
Когда пользователь нажимает кнопку #play, он отправляет сообщение ajax в сценарий php, сценарий php отправляет данные на определенный канал и отправляет данные в формате json обратно пользователю.
JQuery будет анализировать данные AJAX, отправленные обратно сценарием PHP.
Если значение raction равно «true», то проигрывается песня, если «false» останавливает песню.
Но я продолжал получать неопределенные данные для функции actionCall
P / S Я включил в мою html-страницу скрипт myjquery, скрипт pusher, скрипт soundmanager2.
Мой сценарий выглядит следующим образом:
JQuery:
function ajaxCall(ajax_url, ajax_data, successCallback) {
$.ajax({
type: "POST",
url: ajax_url,
dataType: "json",
data: ajax_data,
time: 10,
success: function(msg) {
if (msg.success) {
successCallback(msg);
} else {
alert(msg.errormsg);
}
},
error: function(msg) {}
});
}
function actionCall(data) {
if (data.raction == 'true') {
MP3.play();
}
else {
MP3.stop();
}
}
$(document).ready(function() {
pusher = new Pusher('i have added my app key');
Pusher.channel_auth_endpoint = 'pusher_auth.php';
nettuts_channel = pusher.subscribe('presence-music');
pusher.connection.bind('connected', function() {
nettuts_channel.bind('new_action', function(data) {
actionCall(data);
});
});
soundManager.url = 'swf';
soundManager.flashVersion = 8;
var MP3;
var currentSong = 0;
soundManager.onready(function() {
MP3 = soundManager.createSound({
id: 'sound' + currentSong,
url: "mp3/song.mp3"
});
});
$('#play').click(function() {
ajaxCall('player.php', {
'action': 'true'
}, function(msg) {
player.php
actionCall(msg.data);
});
});
$("#stop").click(function() {
ajaxCall('player.php', {
'action': 'false'
}, function(msg) {
player.php
actionCall(msg.data);
});
});
});
PHP:
<?php
session_start();
include_once 'Pusher.php';
$pusher = new Pusher(
'i have added my app key', //APP KEY
'i have added my app secret', //APP SECRET
'added my app id' //APP ID
);
$action = $_POST['action'];
$pusher->trigger(
'presence-music', //the channel
'new_action', //the event
array('raction' => $action) //the data to send
);
echo json_encode(array(
'raction' => $action,
'success' => true
));
exit();
?>
PHP-скрипт работает, возвращая:
{"raction":"true","success":true}
Проблема в этой ошибке (в jquery):
data is undefined
if(data.raction == 'true'){