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