我正在尝试从循环的php变量中拉出一根字符串,并加载它使用jQuery更新为div。
问题是,当满足条件时,它只是将我重定向到php页面,而不是从中提取信息并将该信息放在主HTML页面上的DIV中。
我还试图将该字符串从DIV放入JavaScript函数responsiveVoice.speak("string");
中,但这也不起作用。
我正在尝试保持问题的格式化,并以我的想法清晰地格式化,并且我遵循了堆栈溢出建议,以获得我的最佳理解。我试图问好问题,但是过去我没有得到其他问题的好评。
编辑:修复了关闭脚本标签和身体标签的位置。它不再将重定向到PHP页面的问题,但仍未运行TTS。它有一个新问题;它没有一遍又一遍地打印出回声。
这是index.html文件:
<html>
<head>
</head>
<body>
<script src="http://code.responsivevoice.org/responsivevoice.js"></script>
<script>
var speek = document.getElementById("load_updates");
responsiveVoice.speak(speek);
</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#load_updates').load('new3.php').fadeIn("slow");
}, 10000); // refresh every 10000 milliseconds
</script>
<div id="load_updates"></div>
</body>
</html>
这是背景循环new3.php
文件:
<?php
for($z=0;$z<2880;$z++) {
$frog = "15";
$tent = "2";
if ($frog >= $tent) {
echo "+ frog!";
echo "tent";
$sayit = "Hello! plus frog tent";
}
}
?>
我删除了为了简洁而更改的PHP环路的一部分。
根据响应voice.js api,spean方法采用字符串参数(以及可选的语音和选项参数)。
说话(字符串文本,[字符串语音],[对象参数])
开始以给定的语音说文字。
文本:字符串
要说的文字。
语音:字符串
默认为"英国女性"。从可用的响应中选择。
参数:对象
用于添加可选音高(范围0到2),速率(范围0到1.5),音量(范围0到1)和回调。
音高,速率和音量可能不会影响某些浏览器组合的音频,例如,Windows上的Chrome较旧版本。 1
您示例中的代码正在传递对DOM元素(即var speek = document.getElementById("load_updates");
)的引用。使用.innerhtml,.text()等传递该元素的文本内容
所以这线:
responsiveVoice.speak(speek);
可以更新为:
responsiveVoice.speak(speek.innerHTML);
或使用jQuery方法:
responsiveVoice.speak($(speek).text());
也可以简化为以下内容,这将使该行不必要:
responsiveVoice.speak($('#load_updates').text());
请参阅此PHPFIDDLE中的此演示 - 只需单击标有" run -f9 "的按钮。
PHPFIDDLE上的演示示例使用相同的文件名来发送异步请求(即$('#load_updates').load('
),因为它似乎不可能在phpfiddle上有一个以上的文件。
它还利用$(document).ready()来确保DOM在代码开始与其元素进行交互之前准备就绪。另请注意,呼叫.load()的呼叫具有呼叫 speakInnerhtml()作为第二个参数传递的 speakinnerhtml(),以便在加载后将使用新文本。
。更新:
以来.load()在将对象传递为第二个参数时将请求发送为帖子,我在phpfiddle上更新了示例以传递简单对象。
$('#load_updates').load('<?php echo $_SERVER['PHP_SELF'];?>', {postData: 1}, speakInnerHTML).fadeIn("slow");
然后在PHP代码中检查该帖子数据:
if (isset($_POST['postData'])) {
echo date('Y-m-d h:i:s');
1 https://responsivevoice.org/api/