Мне нужно преобразовать массив объектов php в переменную javascript, чтобы использовать ее в плагине easyautocomplete. Вот краткое изложение того, что я пытаюсь достичь:
var_dump PHP-объекта, возвращенного из базы данных:
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: { .....
к символьной переменной.
Кроме того, кажется, что полученная переменная имеет двойные кавычки вокруг атрибута «data», но я не уверен, что это вызовет проблему.
Ссылка на пример, который я пытаюсь реализовать: Ссылка на сайт
Поведение на стороне клиента должно быть на стороне клиента, нет необходимости добавлять что-либо к data
, просто укажите необходимый набор данных, все остальные поля могут быть определены в js:
var characters = {
data: <?=json_encode($chars)?>,
getValue: "name",
list: {
onSelectItemEvent: function() {
var value = $("#character1").getSelectedItemData().id;
$("#character").val(value).trigger("change");
}
}
};
Других решений пока нет …