【问题标题】:PHP object array to javascript variablePHP对象数组到javascript变量
【发布时间】: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


【解决方案1】:

客户端行为应该在客户端,不需要在data后面附加任何东西,只需提供所需的数据集,其他所有字段都可以在js中定义:

var characters = {
    data: <?=json_encode($chars)?>,
    getValue: "name",
    list: {
        onSelectItemEvent: function() {
            var value = $("#character1").getSelectedItemData().id;
            $("#character").val(value).trigger("change");
        }
    }
};

【讨论】:

  • 非常感谢,我不知道为什么我没有早点想到这个,简单而且有效。 !
猜你喜欢
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2013-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
相关资源
最近更新 更多