ストリームを再生するサイトがあります。人がボタンを押すと、サーバーへの AJAX 呼び出しを実行します。
<input type="submit" class="play" data-type="<?php echo $result_cameras[$i]["camera_type"]; ?>" data-hash="<?php echo $result_cameras[$i]["camera_hash"]; ?>" value="<?php echo $result_cameras[$i]["camera_name"]; ?>">
これにより、ユーザーが選択できる一連のボタンが出力されます。これは、次のコードによって処理されます。
<script>
$(document).ready(function(){
$(".play").on('click', function(){
var camerahash = $(this).data('hash');
var cameratype = $(this).data('type');
function doAjax(){
$.ajax({
url: 'index.php?option=streaming&task=playstream&id_hash=<?php echo $id_hash; ?>&camera_hash='+camerahash+'&format=raw',
success: function(data) {
if (data == 'Initializing...please wait')
{
$('#quote p').html(data); //shows a message here
setTimeout(doAjax, 2000);
}
else
{
if (cameratype == "WEBCAM" && data == 'Stream is ready...')
{
$('#quote p').html(data); //another message here
window.location = 'rtsp://<?php echo DEVSTREAMWEB; ?>/<?php echo $session_id;?>/'+camerahash;
}
else if (cameratype == "AXIS" && data == 'Stream is ready...')
{
$('#quote p').html(data); //another message here
window.location = 'rtsp://<?php echo DEVSTREAMIP; ?>/<?php echo $session_id;?>/'+camerahash;
}
else
{
$('#quote p').html(data); //another message here
}
}
}
});
}
doAjax();
});
});
</script>
ユーザーがボタンをクリックするとメッセージが表示されるため、すべてが機能します。しかし、別のボタンをクリックしてもメッセージは表示されません。.on
動的にロードされるボタン ( の代わりに)にデリゲート イベント ( ) を使用しました.click()
。