【发布时间】:2018-10-22 02:54:14
【问题描述】:
在我的 WordPress 网站上,我有一个使用 AJAX 和 PHP 将文本转换为音频的表单。更新转换后的文本时文件名保持不变,只是重新创建文件。
除了要播放的音频源在我更新文本时没有被重新加载/刷新之外,一切似乎都正常。
默认下载按钮为我提供更新的文件,如果我刷新整个页面,我只能听到更新的文件播放。
我的代码(为相关性而简化)--
jQuery(document).on('click', '#savetext', function(e) {
e.preventDefault();
var myVideo = $('#player');
var path = $("#path").val();
myVideo.src = path;
$.ajax({
data: {
action: 'polly_pros',
pollytext: txt,
rate: rate,
voice: voice
},
type: 'post',
url: polpro.ajax_url,
cache: false,
success: function(data) {
console.log(data);
myVideo.load();
myVideo.get(0).play();
},
error: function() {
console.log("Error");
}
});
});
<audio id="player" controls>
<source id="audiosource" src="<?php echo $thepath; ?>" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
<textarea name="pollytext" id="pollytext"></textarea>
<button type="submit" id="savetext" name="savetext">save text</button>
我怎样才能使文件更新时,播放的音频也一样?
更新
我尝试了以下建议,但没有解决问题 -
$.ajax ({
data: {
action: 'polly_pros',
pollytext: txt,
rate: rate,
voice: voice
},
type: 'post',
url: polpro.ajax_url,
cache: false,
success: function(data) {
console.log(data);
myVideo.src = path+"&rnd="+new Date().getTime();
myVideo.load();
myVideo.get(0).play();
},
error: function() {
console.log("Error");
}
});
【问题讨论】:
-
尝试将时间戳附加到
src,或动态删除/重新创建audio元素。此外,在服务器上设置文件的过期标头也会有所帮助。 -
我对 ajax 还是很陌生,你能提供一些例子和你的建议吗? @RoryMcCrossan
-
success: function(data) { console.log(data); myVideo.src = path+"&rnd="+new Date().getTime(); myVideo.load(); myVideo.get(0).play(); } -
我用您尝试过的建议更新了我的问题。它没有工作。 @mplungjan
-
您能详细说明您的第二个建议吗?
标签: jquery ajax html5-audio audio-streaming ajaxform