json_encode()适用于一个字符串,但不适用于另一个字符串?

时间:2013-09-10 16:29:27

标签: php javascript jquery json

编辑:

解决。有人评论了一个答案,但后来删除了它。令人尴尬的是,通过在两个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();

2 个答案:

答案 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执行相同的操作。