聚合物和PHP

5

你好,我刚开始学习Polymer。使用PHP收集以下数据。我可以将其嵌入DIV并显示一些数据,但我想将此代码片段转换为具有参数的Polymer元素,并将json数据也导入到外部Polymer元素中,以便用于填充页面。我很难入手,我知道这很基础,但如果有人能指点我一下那就太好了。

<?php 
$host="host";
$username="username"; 
$password="password"; 
$db_name="database";
$db_query="SELECT * FROM table"; 

$mysqli = new mysqli("$host", "$username", "$password", "$db_name");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$mysqli->real_query("$db_query");
$res = $mysqli->use_result();
$rows = array();
while ($row = $res->fetch_assoc()) {
    $rows[] = $row;
}
print json_encode($rows);

?>      

1
附注:字符串变量已经是字符串了,您不需要将它们用双引号括起来。 - Álvaro González
嗨,我解决了这个问题,所以对于其他有类似问题的人,你需要使用core-ajax。 - user2148935
1个回答

11

如果我理解正确,您需要在我的情况下创建服务元素:

<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/core-ajax/core-ajax.html">

<polymer-element name="category-service" attributes="categories">
    <template>
        <style>
        :host {
          display: none;
        }
        </style>
        <core-ajax id="ajax"
        auto
        url="../api/get_category_data.php"
        on-core-response="{{categoriesLoaded}}"
        handleAs="json">
        </core-ajax>
    </template>
    <script>
        Polymer('category-service',
        {
            created: function()
            {
                this.categories = [];
            },

            categoriesLoaded: function()
            {
                console.log('call cat loaded');
                this.categories = this.$.ajax.response.slice(0);
            }
        });
    </script>
</polymer-element>

那么您需要创建一个元素来显示数据

<link rel="import" href="../../bower_components/polymer/polymer.html">
<link rel="import" href="../../bower_components/paper-item/paper-item.html">
<link rel="import" href="category-service.html">

<polymer-element name="category-list" attributes="show">
    <template>
        <style>
        :host {
          display: block;
          width: 100%;
        }
        .paper_item 
        {
            margin: 10px;
            background-color: rgb(255, 255, 255);
        }
        </style>
        <category-service id="service" categories="{{categories}}"></category-service>

        <template repeat="{{category in categories}}">
            <paper-item label="{{category.category_name}}"
                        icon="settings"
                        class="paper_item"
                        center horizontal layout>
            </paper-item>
        </template>
    </template>
    <script>
        Polymer('category-list',
            {
            }
        );
    </script>
</polymer-element>

要获取数据,你需要做正确的事情

<?php

    require_once 'DB_Connect.php';

    $db = new DB_Connect();
    $db->connect();

    $result = mysql_query("SELECT * FROM ad_category") or die(mysql_error());

    while($row=mysql_fetch_assoc($result))
    $output[]=$row;
    print(json_encode($output));
    mysql_close();

?>

希望这对你有所帮助


谢谢,我刚看到你的回复。虽然你的代码有所不同,但我已经成功让它工作了,我需要再仔细研究一下。这太好了,因为你还回答了我的第二个问题,即如何使用repeat命令动态创建组件(在我的情况下是复选框),我一直在苦苦挣扎。 - user2148935
core-ajax现已弃用。应该使用iron-ajax。 - Sourav Bagchi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接