php - json_encode() 适用于一个字符串而不适用于另一个?

标签 php javascript jquery json

编辑:

已解决。有人评论了一个答案,但随后将其删除。令人尴尬的是,通过在两个 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/

相关文章:

javascript - 交叉口观察器在 600 像素视口(viewport) (+GSAP) 以下无法工作

javascript - npm install 如果 package.json 被修改

javascript - 如何从给定字符串中排除某些字符?

php - 重定向到 div 元素 php

php mysqli 将日期插入DATE类型

php - 使用if语句向数据库中插入数据

c# - 表单提交取消 jQuery ajax 调用

javascript - DOM 元素属性未定义 - jquery/ruby on Rails

jquery - 使用 jquery 制作动画时获取 fx 的状态

php - UTF-8贯穿始终