无法将php变量作为参数传递给javascript函数

时间:2013-12-27 23:06:38

标签: javascript php

案例是我有一个.php文件,在里面,我有一个脚本标签内的函数。之后,我有PHP代码,从文件中读取。我想将文件数据发送到js函数。我以前做过这个,但现在它会产生解析错误。

THE file format must not have line breaks!!!!
echo '<script>updateMatch1("'.$filetext.'") </script>';

这是代码

<script>
    function updateMatch1(names) {
    alert(names);
};
</script>
<?php
    /* Read file */
    ...
    $filetext = fread( $file, $filesize ); //checked the output, it's ok

    // numerous ways I tried. Some produce an error and the page isn't loaded at all,
        // while others produce an error in the console
    echo "<script>updateMatch1('" . $filetext . "');</script>";
    //echo '<script> updateMatch1($filetext);</script>';
    //echo '<script>updateMatch1();</script>';
    //echo "<script>updateMatch1($filetext" . ")</script>";
    //echo "<script>updateMatch1($filetext)</script>";
        //echo '<script>updateMatch1(' . $filetext  . ');</script>';
?>

4 个答案:

答案 0 :(得分:1)

如果您没有隐藏代码中的任何内容,则此点会产生解析错误

/* Read file */
    ...

你应该摆脱...

另外,请记住:

<?php $filetext = "alalala"; ?>
<script>
    updateMatch1('<?=$filetext;?>');
</script>

会产生正确的警报'alalala',但是:

<?php $filetext = "alal'ala"; ?>
<script>
    updateMatch1('<?=$filetext;?>');
</script>

将产生:

SyntaxError: missing ) after argument list


updateMatch1('alal'ala');

在传递给js之前转义文件输出。

你可以尝试一个简单的逃脱:

<?php $filetext = "alal'ala"; ?>
<script>
    updateMatch1('<?= htmlspecialchars($filetext, ENT_QUOTES);?>');
</script>

答案 1 :(得分:1)

检查你的file.txt。也许它包含一些非法字符或者有一些不兼容的文件编码会产生非法字符。如果使用php打印$ filetext的值,则没有可见的错误,但它可以在JS中生成一些。例如。它可以是零宽度空间。 查看文件末尾是否有空格或其他字符。

答案 2 :(得分:0)

stackoverflow上有很多重复的问题,不要问一切只是搜索兄弟!

样品:

  1. how to pass php parameter to javascript
  2. How to pass JavaScript variables to PHP?
  3. Passing parameters to Javascript using PHP

答案 3 :(得分:0)

答案是@iMx !!

原因是.txt文件包含换行符。这些会破坏语法。 解决方案是用空格分隔名称,而不是换行,一切都还可以!

echo '<script>updateMatch1("'.$filetext.'") </script>';