2017-01-14 3 views
0

nicht erkennen Ich verwende Knoten und MySQL für das Back-End und Polymer für Front-End, und ich kann nicht Polymer erhalten, um ein JSON-Array zu rendern.Polymer mit Knoten und MySQL JSON

Node/MySQL-Code

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    database : 'test' 
}); 
connection.connect(); 



connection.query('SELECT * FROM ACTIVITY', function(err, rows, fields) { 
    if (err) { 
    console.error('error connecting: ' + err.stack); 
    return; 
    } 
    json = JSON.stringify(rows); 
    console.log(json); 
}); 

connection.end(); 

Polymer Frontend

<paper-dropdown-menu label="Activity Selection"> 
    <iron-ajax 
    id="getActivity" 
    auto 
    url="scripts/dbcon.js" 
    handle-as="json" 
    on-response="handleResponse" 
    last-response="{{ajaxResponse}}"> 
    </iron-ajax> 
    <paper-listbox class="dropdown-content"> 
    <template is="dom-repeat" items="[[ajaxResponse]]"> 
     <paper-item><b>{{item.ACTIVITY_NAME}}</b></paper-item> 
    </template> 
    </paper-listbox> 
</paper-dropdown-menu> 

JSON Ausgabe

[{"ID":1,"ACTIVITY_NAME":"Coffee"},{"ID":2,"ACTIVITY_NAME":"Gym"},{"ID":3,"ACTIVITY_NAME":"Lunch"},{"ID":4,"ACTIVITY_NAME":"Vending Machine"},{"ID":5,"ACTIVITY_NAME":"Pool"}] 

Wenn ich laufen thi s-Befehl: node dbcon.js, die Ausgabe von console.log ist das JSON-Array, das oben gezeigt wird.

Aus irgendeinem Grund erkennt Polymer das JSON-Array nicht. In der Chrome DevTools-Konsole gab es keine Fehler/Ausgaben.

In einem anderen Testszenario (die arbeiten), I kopiert manuell die JSON Array in eine Datei ausgegeben, geändert, um die Parameter aus url"scripts/dbcon.js" zu "scripts/test.json" und nachgeladen die Elektronen app; und Polymer konnte den JSON-Inhalt in der Dropdown-Liste anzeigen.

Antwort

1

Die <iron-ajax>.url Eigenschaft soll die URL Ziel der Anforderung angeben. Es führt die Antwort nicht als JavaScript (wie ein <script> Tag würde) aus, was zu sein scheint, was Sie erwarten.

In Ihrem Fall liest der <iron-ajax> den Inhalt von scripts/dbcon.js und versucht, es als JSON zu analysieren (wegen handle-as="json"). Die Analyse schlägt fehl, was zu einem null Antwortwert führt.

Um dies zu beheben, sollten Sie <iron-ajax>.url an die URL Ihres Node-Server, der die JSON-Antwort bereitstellt.

+0

Danke für die Eingabe und Information. – blitz

+0

@blitz Kein Problem :) – tony19

+0

* Fortsetzung bearbeiten Danke für die Eingabe und Information. Im Moment benutze ich keinen Server, ist es immer noch möglich, das Abfrageergebnis zu extrahieren, um mit json.stringify zu json zu konvertieren und dann die tatsächlichen json-Daten zu erhalten, die übergeben/geparst werden sollen? In der Zukunft kann ich dies auf einem tatsächlichen Server bereitstellen. – blitz