2016-04-07 8 views
0

Ich verwende http://js-grid.com für meine PHP-Anwendung. Ich wähle diese Bibliothek für inline bearbeiten/aktualisieren/hinzufügen/löschen. Jetzt möchte ich $variables oder $array Daten anzeigen, die aus der Datenbank kommen. Hier ist das Skriptwie PHP Variablen (s)/Arrays in Javascript-Funktion (in jsGrid ({Controller}))

<script> 
    $(function() { 
     $("#jsGrid").jsGrid({ 
      pageButtonCount: 5, 
      deleteConfirm: "Do you really want to delete the client?", 
      controller: db, 
      fields: [ 
       { name: "Name", type: "text", width: 150 }, 
       { name: "Age", type: "number", width: 50 }, 
       { type: "control" } 
      ] 
     }); 

    }); 
</script> 

in obigem Code ich eine Eigenschaft bekam genannt controller die db (data) rendert. db stammt aus einer Datei db.js. Die Datei sieht wie folgt:

(function() { 
var db = { 
    loadData: function(filter) { 
     return $.grep(this.clients, function(client) { 
      return (!filter.Name || client.Name.indexOf(filter.Name) > -1) 
       && (!filter.Age || client.Age === filter.Age) 
       && (!filter.Address || client.Address.indexOf(filter.Address) > -1) 
       && (!filter.Country || client.Country === filter.Country) 
       && (filter.Married === undefined || client.Married === filter.Married); 
     }); 
    }, 
    insertItem: function(insertingClient) { 
     this.clients.push(insertingClient); 
    }, 
    updateItem: function(updatingClient) { }, 
    deleteItem: function(deletingClient) { 
     var clientIndex = $.inArray(deletingClient, this.clients); 
     this.clients.splice(clientIndex, 1); 
    } 
}; 

window.db = db; 

db.countries = [ 
    { Name: "", Id: 0 }, 
    { Name: "United States", Id: 1 }, 
]; 

db.clients = [ 
    { 
     "Name": "Otto Clay", 
     "Age": 61, 
    }, 
    { 
     "Name": "Connor Johnston", 
     "Age": 73, 
    } 
]; 

}()); 

Auch folgte ich den Github docs https://github.com/tabalinas/jsgrid-php. Aber ich kann nicht herausfinden, wie ich meine php $variable or $array in meinen Ansichten sowie javaScripts platzieren.

Was ich will: möchte ich $array in den Abschnitt der JAVA-Scripts als controller : db nennen.

Fehler: Wenn ich controller: <?php echo $array; ?>', its returning null cause I can not call as they called as default from db.js`

Bitte helfen Sie mir, dass, wie kann ich nenne php $variable or $array statt controller: db in javaScript Dank fortschrittlicher.

+0

Bitte fügen Sie keine PHP-Variablen in Javascript, abgesehen davon, dass hässlich ist so schlechte Praxis, fügen Sie eine Methode, die JSON statt – jycr753

+0

@ jycr753 zurückgibt :: Ich habe dich nicht bekommen. Würdest du mich bitte etwas mehr führen? Übrigens arbeite ich in Laravel 5.1 :: Ich habe eine Methode in Controller, um das Array oder die Variable vorzubereiten, dann sende ich zu Ansichten –

+0

Sie tun Laravel, so dass es wirklich einfach ist, nur einen neuen Router erstellen, der den Controller das aufrufen wird wird die Daten generieren, die Sie benötigen, in der Controller-Aufruf-Methode, die die Daten von Modellen zurückgeben, ich denke, ist ein Benutzermodell? ist wirklich einfach zu tun – jycr753

Antwort

0

Die Option controller definiert das Verhalten, Sie können dort keine statischen Daten ablegen. Aber es gibt eine Option data, wo Sie statische Werte setzen können (wie in Ihrem Beispiel von PHP).

Eine weitere Option für Sie ist controller.loadData zu definieren:

controller: { 
    loadData: function() { 
     return $.ajax({ 
      type: "GET", 
      url: "/clients/" 
     }); 
    }, 

und auf dem Server dienen Ihnen die gewünschten Informationen

switch($_SERVER["REQUEST_METHOD"]) { 
    case "GET": 
     $result = $clients->getAll(); 
     break; 
    ... 
} 

header("Content-Type: application/json"); 
echo json_encode($result); 

Sie die Umsetzung in der jsgrid-php repo finden.

+0

:: Danke. Lassen Sie mich alle in mein System einchecken. –

+0

@ tablin :: Vielen Dank. ES FUNKTIONIERT !!!!! –