编辑:
解决。有人评论了一个答案,但后来删除了它。令人尴尬的是,通过在两个json_encode行之后添加分号来解决问题。我仍然不知道为什么string1在没有结束分号的情况下工作,而string2没有,但是它有效,所以......成功了?
/ EDIT
嗨......这里相当高兴的程序员。
在PHP中,我从数据库中抓取两个数组。这很好用。然后我将每个数组内爆成一个字符串。这也很好。
稍后在同一个文件中,在我的代码的javascript部分(以jQuery为特色),我这样做:
string1 = <?php echo json_encode($string_1);?>
string2 = <?php echo json_encode($string_2);?>
编码string1完美无缺......只要我完全注释掉string2行。它杀了我的页面。
我已经尝试确保我的字符串是utf8编码的。我已经尝试确保没有反斜杠或其他有问题的字符。目前,我已经设计了一些尽可能没有问题的虚拟代码......仍然无效。
这是它的骨架版本。
PHP:
$array1 = array();
$array2 = array();
$i = 1;
while($row = mysqli_fetch_assoc($query_result)) {
$array1[$i] = $row['column1'];
$array2[$i] = $row['column2'];
$i++;
}
$string1 = implode(",", $array1);
$string2 = "oh_come_on_why_doesnt_this_work"; // implode(",", $array2);
和JS / HTML / JQuery:
var string1;
var string2;
$.getScript("js/set_functions.js", function(){ loadedScript() });
function loadedScript() {
string1 = <?php echo json_encode($string1);?>
string2 = <?php echo json_encode($string2);?>
// string2 = <?php echo "'" . $string2 . "'";?> doesn't work either
alert(string1); // works if I comment out both string2 = … lines
alert(string2); // displays "undefined" if the first string2 = … line is commented…
// …out, doesn't display at all if it isn't
}
请尽快帮助。
如果您需要查看更多我的代码,或者我还能做些什么来帮助改善这个问题,请告诉我。感谢。
PS:我知道,我不是一个优秀的程序员。请不要纠正我的其他不良编码习惯在LIEU OF帮助解决这个问题。谢谢!
编辑:对不起,回应Joe Fraumbach,这是我的复制粘贴错误。我实际上声明了$ array2 = array();答案 0 :(得分:2)
编辑:你在JS赋值表达式的末尾缺少分号,这在某些情况下会导致解析问题:两行都可能成为单个多分配表达式的一部分。尝试添加它们,看看是否能解决您的问题。
string1 = <?php echo json_encode($string1); ?>;
string2 = <?php echo json_encode($string2); ?>;
请注意,json_encode仅适用于UTF-8。因此,如果你不确定它的输入是UTF-8,utf8_encode()你输入它的字符串,否则整个字符串在PHP中呈现为null(并在连接时转换为空字符串)。
答案 1 :(得分:0)
$array2
。您定义了$array1 = array();
。对$array2
执行相同的操作。