Я пытаюсь синхронизировать некоторые свойства полимерных элементов с базой данных MySQL на localhost, используя MAMP.
Как передать данные SQL из переменной PHP в связанное свойство данных Polymer?
Полимерный элемент выглядит следующим образом:
<iron-ajax id="ajax"auto
url="../src/data/php/get_data.php"last-response="{{lastResponse}}"handle-as="text"></iron-ajax>
…
static get properties() { return {
lastResponse: {
type: Object,
value: {}
}
}}
lastResponse () {
console.log(this.lastResponse);
}
PHP-скрипт выглядит следующим образом:
<?php
$servername = "localhost";
$username = "***";
$password = "***";
$dbname = "myDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
Функция PHP
get_data.php
должен повторить (не вернуть) JSON, так как:
$res['data'] = 'Hello!';
echo json_encode($res);
и iron-ajax должен быть установлен для получения JSON:
handle-as="json"
как в документах здесь
https://www.webcomponents.org/element/PolymerElements/iron-ajax/elements/iron-ajax
В Polymer сначала выполните запрос AJAX, а затем получите данные следующим образом:
get_data_responseHandler: function(e) {
console.log(e.detail.response);
}
Так создается точка API.
Других решений пока нет …