代码之家  ›  专栏  ›  技术社区  ›  Inception

php对象数组到javascript变量

  •  3
  • Inception  · 技术社区  · 6 年前

    我需要将一个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: { ..... 到字符变量。

    另外,结果变量在“data”属性周围似乎有双引号,但我不确定这是否会导致问题。

    链接到我尝试实现的示例: Link

    1 回复  |  直到 6 年前
        1
  •  0
  •   u_mulder    6 年前

    客户端行为应该在客户端,不需要在 data ,只需提供所需的数据集,其他所有字段都可以在JS中定义:

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