jQuery div从PHP填充仅重定向到PHP页面



我正在尝试从循环的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/

最新更新