我正在开发一个网页,该网页接受 HTML 表单输入,使用 PHP 在循环中对其进行处理,然后使用 jQuery 在 div
中显示 PHP 回显输出,然后使用 ResponsiveVoiceJS 进行 TTS 朗读消息。
现在可见的问题是,加载页面后,TTS 开始循环说出网页文件名和一些随机 PHP,然后显示表单两次。
它不应该做任何这样的事情!
由于我不确定代码的哪一部分导致了问题,因此以下是完整的代码:
<html>
<head>
</head>
<body>
<form action="<?php
echo $_SERVER['PHP_SELF'];
?>" method="post">
What is your URL? <input type="text" name="pastedurl"><br>
What is your minimum interval? <input type="text" name="interval"><br>
<input type ="submit">
</form>
<?php
set_time_limit(18000);
if (isset($_POST['submit']))
{
// echo "stopped here";
// die; //THIS DOESN'T WORK EITHER
$pastedlink = $_POST['pastedurl'];
$pastedlink2 = $_POST['pastedurl'];
$rate = $_POST['interval'];
parse_url($_POST['pastedurl'], PHP_URL_HOST);
if (parse_url($_POST['pastedurl'], PHP_URL_HOST) == 'www.instructables.com')
{
for ($z = 0; $z < 2880; $z++)
{
$tutorial_json = file_get_contents($pastedlink);
$tutorial_array = json_decode($tutorial_json, true);
$oldviews = $tutorial_array['views'];
sleep(30);
$tutorial_json2 = file_get_contents($pastedlink);
$tutorial_array2 = json_decode($tutorial_json2, true);
$currentviews = $tutorial_array2['views'];
$viewcount1 = (int) $oldviews;
$viewcount2 = (int) $currentviews;
$change = $viewcount2;
$change -= $viewcount1;
$rateasint = (int) $rate;
if ($change >= $rateasint)
{
$sayit = "Alert! Your Tutorial has gained " . $change . " more views";
echo $sayit;
}
}
}
else
{
exit("Error: URL submitted was not from www.instructables.com");
}
}
?>
<script src="http://code.responsivevoice.org/responsivevoice.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script>
$(document).ready(function(readyEvent) {
speakInnerHTML();
});
function speakInnerHTML() {
var speek = document.getElementById("load_updates");
responsiveVoice.speak(speek.innerHTML);
}
</script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#load_updates').load('<?php
echo $_SERVER['PHP_SELF'];
?>',speakInnerHTML).fadeIn("slow");
}, 10000); // refresh every 10000 milliseconds
</script>
<div id="load_updates"> </div>
</body>
</html>
抱歉,格式很差,我是菜鸟,不知道格式化这些编程语言的方法!
以下是操作错误的视频: youtube
最佳答案
1.
die; //THIS DOESN'T WORK EITHER
die()
是一个函数,尽管 echo
很神奇,但所有函数都是用括号调用的。
2.
isset($_POST['submit'])
这不起作用,因为存在名为 submit
的变量。
要解决此问题,请将 name 属性添加到提交控件,如下所示:
<input type="submit" name="submit">
3. 您正在使用 jQuery 加载页面本身,即使它包含......好吧......本身。它将每 10000 毫秒递归地用自己的实例填充页面。每个实例也会这样做。您需要使用表单中的数据查询页面,而不仅仅是加载它。并添加一个条件,以便如果有$_POST数据,则页面不显示所有HTML。
关于javascript - HTML 表单文本转语音说出文件名和 PHP、 double 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42818160/