【发布时间】:2016-02-03 22:00:27
【问题描述】:
我有一个 PHP 数组,我想将它传递给 jQuery 并更新页面上的行。
这个 PHP 数组是页面上选中的复选框的“名称”。 (所以这个数组可以是任意长度,取决于用户选择的内容)
PHP 数组:
var_dump($sr->conflict_return);
OUTPUT CHECK: array(5) { [0]=> string(33) "hours_9_7_reg_session_102_905_925" [1]=> string(33) "hours_9_7_reg_session_101_905_925" [2]=> string(33) "hours_9_7_reg_session_103_905_925" [4]=> string(33) "hours_9_7_reg_session_104_845_915" [13]=> string(33) "hours_9_7_reg_session_103_845_905" }
这种情况……我的 [php] 数组中有 '5' 个元素。
这就是我的问题所在......
有时它'有效'......有时它不......
“关键”似乎是数组中的内容:
OUTPUT CHECK: array(3) { [0]=> string(33) "hours_9_7_reg_session_102_845_905" [1]=> string(33) "hours_9_7_reg_session_101_845_905" [2]=> string(33) "hours_9_7_reg_session_104_845_915" }
这似乎有效.. 数组中的 3 个项目.. 舞台上的所有 3 行都被突出显示。
这个:
OUTPUT CHECK: array(4) { [0]=> string(33) "hours_9_7_reg_session_102_845_905" [1]=> string(33) "hours_9_7_reg_session_101_845_905" [2]=> string(33) "hours_9_7_reg_session_103_845_905" [4]=> string(33) "hours_9_7_reg_session_104_845_915" }
不起作用...并且没有突出显示任何行
(好像数组中有 4 个项目会中断??)
我的 jQuery 来解析数据:
var conflictItems = <?=json_encode($sr->conflict_return); ?>;
//has a conflict list
if(conflictItems.length > 0){
alert("Has conflicts");
//loop through and highlight elements on stage
for(i=0; i<conflictItems.length; i++){
console.log(conflictItems[i]);
$("#sr_table_"+conflictItems[i]+"_row").addClass("conflict_border");
}
}
当我跟踪 (console.log()) 数据时......我得到奇怪的结果。
console.log('CONFLICT ITEMS: ' + conflictItems);
console.log('CONFLICT COUNT: ' + conflictItems.length);
数组中的 3 个 x 项...如上所示:
CONFLICT ITEMS: hours_9_7_reg_session_103_845_905,hours_9_7_reg_session_102_845_905,hours_9_7_reg_session_104_845_915
CONFLICT COUNT: 3
这对我来说是正确的。我的数组中有 3 个项目是从 PHP 传递过来的。jQuery 遍历列表并向每个“行”添加一个类。
但是,当我添加第 4 项时......跟踪的输出是:
CONFLICT ITEMS: [object Object]
CONFLICT COUNT: undefined
那怎么办?我的数组会变成一个对象吗?.. 还有更多为什么??
我该如何解决这个问题?我不明白为什么数组中有 3 个项目有效.. 但不是 4 个?
【问题讨论】:
-
Javascript 没有非顺序数组,因此 PHP 将其编码为对象。
-
@JonStirling 很好 - 你应该把它作为答案发布!
-
提示:
array_values().
标签: php jquery arrays json object