Javascript函数不会回显

时间:2013-07-30 16:46:31

标签: php javascript function loading

我有一个包含一些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获得了该变量。

2 个答案:

答案 0 :(得分:3)

非常小心这类代码。你正在直接生成Javascript。来自PHP的 ANY 警告或杂散输出可能会在代码中引入语法错误,导致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代码的一部分,并被视为语法错误。

答案 1 :(得分:0)

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

echo "<script>var varmonthS = " . $_GET['location'] . ";";
echo "alert(varmonthS);</script>";