javascript - HTML 表单文本转语音说出文件名和 PHP、 double 表单

标签 javascript php jquery html forms

我正在开发一个网页,该网页接受 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/

相关文章:

php - Laravel 搜索工具不提供输出

javascript - 具有无限子类别级别的 Laravel 下拉嵌套类别给出错误

javascript - 触发ajax调用加载无限元素的最佳方式?

jquery - 用于可过滤投资组合的多种数据类型 HTML/jQuery

javascript - 如何为所有列拆分每列数组? (JavaScript)

javascript - 如何在 ES6 或 Javascript 中的 settimeout 函数之后触发不受我们控制的函数?

Javascript 等价于 PHP Explode()

jQuery .show() 让输入框颤抖

javascript - 如何使用 jQuery Mobile 或 Javascript 在 Web 应用程序上进行下拉页面刷新

javascript - 在 React 中切换布局同时保持状态