当我点击浏览器上的后退按钮时,我遇到了更新URL的问题(我在Firefox上进行测试).更新iframe的"src"属性后,我用它replaceState来更新历史记录.如果我在此之后点击后退按钮,iframe将返回上一页但URL不会更新以反映这一点.
function updateURLBar(urlInfo) {
var stateObj = { foo: "bar" };
document.getElementById("iframeContent").src = urlInfo[1];
window.history.replaceState(stateObj, "page 2", urlInfo[0]);
}
Run Code Online (Sandbox Code Playgroud)
我是以错误的方式解决这个问题,还是我错过了一些东西.感谢先进的任何帮助!
经过长时间的搜索,我找不到解决这个问题的方法,通过Ajax GET加载Datatables的文档已被很好地证明,但是如何在Ajax POST之后直接使用JSON响应呢?
这是我的PHP函数:
function getRelated() {
var elements = (document.getElementsByClassName('exashare'));
var query = [];
for(var i=0;typeof(elements[i])!='undefined';query.push(elements[i++].getAttribute('data-id')));
query = query.join(',');
$.ajax({
type: "POST",
url: baseUrl+"/requests/get_related.php",
data: "query="+query+'&_token='+_token,
cache: false,
success: function(html){
$('#example').DataTable( {
"processing": true,
"serverSide": true,
"ajax": {
'url':jQuery.parseJSON(html),
"dataSrc": ""
},
"columns" : [
{ "data": "#" },
{ "data": "id" },
{ "data": "art" },
{ "data": "name" },
{ "data": "title" },
{ "data": "tag" },
{ "data": "likes" },
{ "data": "views" }, …Run Code Online (Sandbox Code Playgroud) PROCEDURE在 MySQL 中为像 SQL 那样的多个查询创建 a 的正确方法是什么?
CREATE OR REPLACE PROCEDURE foo
IS
BEGIN
-- The create sentence goes here. For example:
-- EXECUTE IMMEDIATE
-- 'CREATE TABLE bar (...)';
-- The update sentence goes here
-- EXECUTE IMMEDIATE
-- 'UPDATE bar SET ...';
-- The drop/delete sentence goes here.
-- EXECUTE IMMEDIATE
-- 'DROP TABLE bar;'
END;
Run Code Online (Sandbox Code Playgroud) 我想流式传输M4A音频文件,但由于某种原因,播放器仅在下载整个文件后才开始播放歌曲。
<!DOCTYPE html>
<html>
<body>
<audio controls>
<source src="https://php-test-easybreazy.c9users.io/music/1021785690_1171244514_239291028.m4a" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
在我的Ubuntu服务器中,我使用FFMPEG来编码我的音频文件。
我唯一能想到的是元数据/编码问题。
为什么播放器只有在下载了整个文件音频后才开始播放?
使用这个插件我需要绘制带有预渲染数据的音频波形.
我将JSON数据存储在MySQL中 {"sample_rate":44100,"samples_per_pixel":4410,"bits":8,"length":2668,"data":[0.13,0.19,0.15,0.11,0.13,0.13,0.24,0.35 ...]}
所以我尝试过:
PHP
$json = $row['wave'];
$json_array = json_decode($json);
$json_wave = implode(',', $json_array->data);
Run Code Online (Sandbox Code Playgroud)
HTML
<div data-track-wave="'.$json_wave.'" id="play'.$row['id'].'" class="track"></div>
Run Code Online (Sandbox Code Playgroud)
JS
function createWaveform(json) {
$( "#waveformbottom" ).empty();
var linGrad = document.createElement('canvas').getContext('2d').createLinearGradient(0,0,0,170);
linGrad.addColorStop(0, '#ff3b25');
linGrad.addColorStop(0.5, '#ff0018');
var wavesurferbottom = WaveSurfer.create({
container: document.querySelector('#waveformbottom'),
waveColor: '#b3b3b3',
progressColor: linGrad,
backend: 'MediaElement',
mediaType:'audio',
height:'48',
cursorColor:'#fff',
cursorWidth:'0',
normalize:true,
barWidth:'2'
});
//Set peaks ! THE PROBLEM !
wavesurferbottom.backend.peaks = [json];
//Draw peaks
wavesurferbottom.drawBuffer();
$(window).resize(function(){
if($(this).width() != width){
widthbottom = $(this).width();
wavesurferbottom.drawer.containerWidth = wavesurferbottom.drawer.container.clientWidth;
wavesurferbottom.drawBuffer(); …Run Code Online (Sandbox Code Playgroud) javascript ×4
json ×2
ajax ×1
audio ×1
datatables ×1
ffmpeg ×1
html ×1
html5-audio ×1
iframe ×1
mysql ×1
streaming ×1