2017-03-31 4 views
0

Image eine Seite, diese Seite heißt "Dashboard". Im Dashboard gibt es ein Dropdown-Menü mit Elementen, die vom PHP-Skript aufgelistet werden. Die Anzahl hängt von der Anzahl der Ergebnisse in einer Datenbank ab.Holen Sie Informationen von einer Seite zu einer anderen mit Winkelführung

State 1 - Dashboard with opened drop-down menu

Wenn nun ein Benutzer eines der Elemente aus dem Menü klickt, soll es ihn auf die Konfigurationsseite, mit einigen Daten (id, Typ) umleiten. Hört sich einfach an, aber die Umleitungsmethode wird mit eckig erstellt, so dass URL-Hashing verwendet wird, ohne die Site zu aktualisieren. URL der Konfigurationsseite sieht dann aus wie:

https://www.example.com/index.php#/configure

... und ich möchte einige Daten dorthin zu gelangen. Die Site, die wir dort sehen, ist nur eine leere Site, die in der Dateistruktur den Namen "configuration.php" hat, aber Sie sehen sie nicht in der URL, weil der Code in "configure.module.js.php" steht “, was einfach den Benutzer umleitet, gibt ihnen das Recht Seite mit:

(function() { 
    'use strict'; 

    angular.module('BlurAdmin.pages.configure', []) 
     .config(routeConfig); 

    /** @ngInject */ 
    function routeConfig($stateProvider) { 
    $stateProvider 
     .state('configure', { 
      url: '/configure', 
      title: 'Configuration', 
      templateUrl: 'app/pages/configure/configure.php', 
      controller: 'addCtrl', 
     }); 
    } 

})(); 

Also gehe ich davon aus, dass, wenn ich die Daten auf meiner Website zu bekommen, ich brauche eine Art von GET-Anfrage. Ich fand heraus, dass es funktioniert, wenn ich die GET-Anforderung wie so verwenden:

https://www.example.com/index.php?something=works&omg=itWorks#/configure 

Also meine index.php mit den GET-Daten arbeiten und schreibt sie in einer Sitzung, die dann in der Konfiguration verwendet werden kann. php!

Nun, es funktioniert, irgendwie ... Aber die Hauptsache ist, dass es alles kantig ist, so NO SITE REFRESH AT ALL! Das bedeutet, dass keine meiner Dateien aktualisiert wird. Wenn ich also erneut auf die Schaltfläche klicke, wird die Site die GET-Anfrage nicht mehr erhalten, sie leitet mich einfach in die configuration.php um, ohne mit den neuen Daten zu arbeiten behalte die ersten GET-Parameter und SESSION.

So geht meine Frage. wie man es macht? Ich brauche wirklich diesen einen Klick, um diese Daten an die configuration.php zu senden, ohne die Seite zu aktualisieren, sondern zu arbeiten und zu aktualisieren.

+0

Verwenden Sie einige Tutorials https://www.sitepoint.com/write-modular-code-angular-ui-router-named-views/ – jos

+0

Angular ist ein Client-Seite "Framework" es soll Ajax verwenden, um Daten von anfordern den Server und laden Sie ihn in eine HTML-Vorlage. Wenn Sie versuchen, Daten sowohl an eine PHP-Datei zu übergeben als auch Angular zu verwenden, um sie zu rendern, ist das Angular Routing nicht für Sie geeignet. Sie sollten eine HTML-Vorlage an Angular übergeben und für erforderliche Daten eine Ajax-Anforderung an den Server stellen. Oder auf eine neue PHP-Seite umleiten, ohne das Routing von Angular zu verwenden. – eric

+0

Man erhält keine Daten auf eine Site. Man verwendet '$ http.get' um ** Daten * von einer Site ** zu erhalten und' $ http.post' um ** Daten * an * eine Site ** zu posten. Weitere Informationen finden Sie in der [MDN-Web-Techologie-Referenz - HTTP-Anfrage-Methoden] (https: //developer.mozilla.org/de-DE/docs/Web/HTTP/Methoden). – georgeawg

Antwort

1

In html Sie fügen ui-sref diese Config hinzufügen

url:'/configure/:id' 

in Ihrem Controller

ui-sref="configure/({id: valueid}) 

in der Datei mögen $ stateParams wie diese

function addCtrl($scope,$http,$stateParams) 

und die Verwendung von Ajax GET

var params = $.param({'id':$stateParams.id}) 

     $http({ 
        method:'GET', 
        url:'yoururl?id=' + $stateParams.id, 
        data:params, 
        headers : { 'Content-Type': 'application/x-www-form-urlencoded' } 

       }).then(onSuccess); 
Verwandte Themen