javascript - PHP - 回显 Javascript 函数

标签 javascript php

我看过其他关于回显 JS 代码的帖子,但它不适用于我的 JS 代码。我不知道是否是因为我也在回显 AJAX 调用,但我不明白为什么 PHP 会对此大惊小怪。

在将这些 JS 调用回显转换为其等效的 PHP 调用时我做错了什么?

JavaScript 代码:

    <script language="Javascript">
    var countdown;
    var i=0;
    countdown = setInterval(function(){
        var xmlhttp;
        if (window.XMLHttpRequest){
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }else{
            // code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function(){
            if (xmlhttp.readyState==4 && xmlhttp.status==200){
                var JSONobj=JSON.parse(xmlhttp.responseText);
                document.getElementById("homelink").innerHTML=i;
                i++;
            }
        }
        xmlhttp.open("GET","updateindex.php",true);
        xmlhttp.send();
    },3000);
    </script>

上述 JavaScript 代码的 PHP 回显(我需要,但不起作用):

    <?php
    echo "<script language='Javascript'>";
    echo "var countdown;";
    echo "var i=0;";
    echo "countdown = setInterval(function(){";
    echo "var xmlhttp;";
    echo "if (window.XMLHttpRequest){";
    echo "// code for IE7+, Firefox, Chrome, Opera, Safari";
    echo "xmlhttp=new XMLHttpRequest();";
    echo "}else{";
    echo "// code for IE6, IE5";
    echo "xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');";
    echo "}";
    echo "xmlhttp.onreadystatechange=function(){";
    echo "var JSONobj=JSON.parse(xmlhttp.responseText);";
    echo "document.getElementById('homelink').innerHTML=i;";
    echo "i++;";
    echo "}";
    echo "}";
    echo "xmlhttp.open('GET','updateindex.php',true);";
    echo "xmlhttp.send();";
    echo "},3000);";
    echo "</script>";
    ?>

我上面的 PHP 代码尝试根本没有任何作用。

最佳答案

您没有回显换行符 (\n) 字符,因此整个输出是一行文本。

为了使其工作,您需要完美地使用分号、大括号等的 JS 语法。此外,您在以下位置使用单行注释 (//)这一结果行的输出。一旦解析器命中其中的第一个,该行的其余部分(即代码的其余部分)就是注释。首选多行注释符号 (/* comment */)。

您需要在每个回显行的末尾添加换行符或使用 heredoc或类似的长格式字符串。

总而言之,像这样回显 JS 确实是不好的做法。你应该停止这样做。关闭 PHP 并在需要时重新打开它是一个好的开始。将大部分 JS 移至外部 JS 文件会更好。如果需要PHP输出数据到JS,还有很多其他的方法可以实现。

评论添加:echo "xmlhttp.open 行之前还有一个额外的 echo "}"; 行。当尝试从一种语言回显另一种语言时,这种事情很常见,所以这是我说你应该停止的原因之一。

此外,在检查 onreadystatechange 时,在尝试解析响应之前,您不会检查请求是否已完成且是否成功。

可能还有其他问题,但这就是我到目前为止所遇到的。

关于javascript - PHP - 回显 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20306835/

相关文章:

php - Laravel 5.3 使用单个 SQL 查询和缓存需要 1.9 秒

php - 跟踪 ImageView - PHP

javascript - 解析完整的 json 并搜索与值匹配的键

javascript - $addToSet 到一个数组,但它给了我 null

javascript - 单击模态 Bootstrap 关闭后如何更改颜色按钮(提交)

php - 异常 'PDOException',消息为“SQLSTATE[HY000] : General error: 1293 Incorrect table definition when setup Magento 2. 0 (0.1.0-alpha107)”

javascript - 谷歌分析答案属性有什么用?

javascript - 打开 Bootstrap 模式弹出窗口时防止加载其他类

php - fpasstrhu 中允许的内存大小耗尽

php - 在 URL 中显示 ID 号并将 ID 号中的数据库结果提取到文本字段中