我有一个 php 文件,其中包含一些 javascript 代码,我正在使用 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 获取了该变量。
最佳答案
对于这种类型的代码要非常小心。您直接生成 Javascript。 任何警告或 PHP 的杂散输出都可能会在代码中引入语法错误,导致 JS 解释器杀死整个脚本 block 。
您最好生成一些数据,然后将其发送到预先编写的 Javascript,然后 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 代码的一部分,并被视为语法错误。
关于php - Javascript 函数不会回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17952840/