【发布时间】:2018-11-26 11:40:12
【问题描述】:
我需要将 php 对象数组转换为 javascript 变量,以便在“easyautocomplete”插件中使用它。这是我要实现的目标的简要说明:
从数据库返回的 PHP 对象的 var_dump:
array(223) {
[0]=>
object(stdClass)#5 (9) {
["id"]=>
string(2) "10"
["no"]=>
string(3) "CN1"
["name"]=>
string(10) "Cyclops"
}
[1]=>
object(stdClass)#6 (9) {
["id"]=>
string(2) "11"
["no"]=>
string(3) "CN2"
["name"]=>
string(11) "Professor X"
}
..
..
所需的javascript格式:
var characters = {
data: [
{"name": "Cyclops", "id": 1},
{"name": "Professor X", "id": 2}
],
getValue: "name",
list: {
onSelectItemEvent: function() {
var value = $("#character1").getSelectedItemData().id;
$("#character").val(value).trigger("change");
}
}
};
我尝试了什么:
var characters = <?php echo json_encode(['data' => $chars]); ?>;
结果:
var characters = {
"data": [
{"id":"10","no":"CN1","name":"Cyclops"},
{"id":"11","no":"CN2","name":"Professor X"}
]};
似乎我几乎得到了我需要的结果,但我不知道如何将从getValue : "name" list: { ..... 开始的剩余属性附加到字符变量。
此外,结果变量似乎在“数据”属性周围有双引号,但我不确定这是否会导致问题。
链接到我正在尝试实现的示例:Link
【问题讨论】:
-
试试
characters = JSON.parse('<?= json_encode(["data" => $chars]); ?>'); -
真的需要 JSON.parse 吗?另外,我该如何将剩余部分附加到
characters变量中? -
无需附加您的值。您可以保持原样,只提供数据数组。
-
@u_mulder 但我需要将从
getValue: "name"...开始的部分附加到变量中,以使插件正常工作! -
Json 数据不能在 JS 中使用,除非您使用 JSON.parse() 对其进行解析,如果您需要将 json 数据附加到您的字符对象,那么只需附加一个值设置为的数据属性
data: JSON.parse('<?= json_encode($chars); ?>');
标签: javascript php arrays easyautocomplete