2

我有一个包含一些 javascript 代码的 php 文件,我正在使用我的 HTML 中的脚本标签调用该文件。我的问题是当我在 php 中有一个 get 方法时,java 函数不会回显..这是我的代码:

Header("content-type: application/x-javascript");

        $monthS = $_GET['location'];

     // Connect to MySQL
         if ( !( $database = mysql_connect( "localhost",
            "root", "" ) ) )                      
            die( "Could not connect to database </body></html>" );

    // open Events database
         if ( !mysql_select_db( "Events", $database ) )
            die( "Could not open Events database </body></html>" );


            $result = mysql_query("SELECT * FROM posted_events WHERE Month_ = 'July' ") 
                    or die ('Error updating database because: '.mysql_error());;


            $daysArray = Array();
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $daysArray[] =  $row['DayNum']; }
            $length = count($daysArray);

            echo "function test() { ";
                echo "alert('monthS');";
                for($i=0; $i < $length; $i++) { 
            echo "var active = document.getElementById('day'+".$daysArray[$i].");
             active.setAttribute('class', active.getAttribute('class') + ' event');  ";
}       
            echo "}";

但是如果我删除$monthS = $_GET['location'];,那么函数会完美地回响,但我需要那个变量。我使用 JQuery 从 JS 获得了该变量。

4

2 回答 2

3

对这种类型的代码要非常小心。您正在直接生成 Javascript。PHP 的任何警告或杂散输出都可能会在代码中引入语法错误,导致 JS 解释器终止整个脚本块。

您最好生成一些用于预先编写的 Javascript 的数据,然后这些数据可以处理数据,例如

$data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
   $data[] = $row;
}
?>
<script type="text/javascript">
var data = <?php echo json_encode($data); ?>;

for (i in data) {
   ... do stuff with javascript data array
}

就目前而言,如果您在此脚本的 url 中没有location参数,您可能会收到有关未定义数组键的 PHP 警告。该警告将成为 JS 代码的一部分,并被视为语法错误。

于 2013-07-30T16:52:07.317 回答
0

您需要将 PHP Get 变量回显到 javascript 中以分配 js 变量。

echo "<script>var varmonthS = " . $_GET['location'] . ";";
echo "alert(varmonthS);</script>";
于 2013-07-30T16:52:27.597 回答