我知道这个问题是重复的,但我真的希望得到一些帮助。我知道将php数组发送到js的唯一方法是使用json编码。好吧,我尝试过,但没有任何作用。这是我的代码:
<?php
Header("content-type: application/x-javascript");
error_reporting(E_ERROR | E_WARNING | E_PARSE);
$months = Array();
$months = ['January'=>array(), 'February'=>array(), 'March'=>array(), 'April'=>array(), 'May'=>array(), 'June'=>array(), 'July'=>array(), 'August'=>array(), 'September'=>array(),
'October'=>array(), 'November'=>array(), 'December'=>array() ];
// 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>" );
foreach($months as $month => $arr) {
$result = mysql_query("SELECT * FROM posted_events WHERE Month_ = '$month' ")
or die ('Error updating database because: '.mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$months[$month][] = $row['DayNum'];
}
}
echo "var months = jQuery.parseJSON('$months');";
<?php
那么JS数组变量'months'应该包含PHP数组变量中的所有元素吗?好吧它不起作用。我不知道出了什么问题。请帮忙?我需要在我的外部JS文件中使用这个数组来对我的程序做更多的工作,所以这非常重要。谢谢你们。
答案 0 :(得分:1)
您需要使用PHP对JSON数据进行编码。这可以使用json_encode()
完成。一旦编码,您就可以将变量传递给Javascript,如下所示:
$months = json_encode($months);
echo "var months = $months ;";
此外,您目前正在使用jQuery.parseJSON
。但是,jQuery documentation说:
JSON标准不允许“控制字符”,例如制表符或换行符。类似
$.parseJSON('{"testing":"1\t2\n3"}')
的示例会在大多数实现中引发错误,因为JavaScript解析器将字符串的制表符和换行符转换为文字制表符和换行符;将1\\t2\\n3
之类的反斜杠加倍会产生预期结果。将JSON从服务器端语言(如PHP)注入JavaScript文件时经常会出现此问题。
改为使用JSON.parse()
。
json = JSON.parse(months);
for(var i in json) {
//code
}
大多数浏览器都支持此功能,但对于那些不支持的浏览器,您可以使用json2.js
。
希望这有帮助!