1

编辑:

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

4

2 回答 2

2

编辑:您在 JS 赋值表达式的末尾缺少分号,这在某些情况下会导致解析问题:两行都可能成为单个多赋值表达式的一部分。尝试添加它们,看看是否能解决您的问题。

string1 = <?php echo json_encode($string1); ?>;
string2 = <?php echo json_encode($string2); ?>;

请注意,json_encode 仅适用于 UTF-8。因此,如果您不确定它的输入是 UTF-8,请使用 utf8_encode() 输入的字符串,否则整个字符串在 PHP 中将呈现为 null(并在连接时转换为空字符串)。

于 2013-09-10T18:30:17.857 回答
0

$array2从未定义。你定义了$array1 = array();. 对 做同样的事情$array2

于 2013-09-10T16:35:33.313 回答