编辑:
已解决。有人评论了一个答案,但随后将其删除。令人尴尬的是,通过在两个 json_encode 行之后添加分号解决了这个问题。我仍然不知道为什么 string1 在没有结束分号的情况下工作而 string2 没有,但它工作了,所以……成功了吗?
/编辑
嗨……这里是相当菜鸟的程序员。
在 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:我不是一个好的程序员,我知道。请不要纠正我的其他不良编码习惯来代替帮助解决此问题。谢谢!
编辑:抱歉,作为对 Joe Fraumbach 的回应,这是我复制粘贴时的一个错误。我实际上已经声明了 $array2 = array();
最佳答案
编辑:您在 JS 赋值表达式的末尾缺少分号,这在某些情况下会导致解析问题:这两行可能成为单个多赋值表达式的一部分。尝试添加它们,看看是否能解决您的问题。
string1 = <?php echo json_encode($string1); ?>;
string2 = <?php echo json_encode($string2); ?>;
请注意,json_encode 仅适用于 UTF-8。因此,如果您不确定它的输入是 UTF-8,utf8_encode() 您提供给它的字符串,否则整个字符串在 PHP 中呈现为 null(并在连接时转换为空字符串)。
关于php - json_encode() 适用于一个字符串而不适用于另一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724316/