2016-05-23 7 views
0

Im Wesentlichen habe ich eine Reihe von Schaltflächen, die ich verwende, um eine Tabelle von Daten zu filtern.PHP/Ajax - Mehrere GET Parameter

Ich habe meine ersten beiden Tasten bekommen mit der folgenden Ordnung zu arbeiten:

<button onclick="filter('open');" class="open">Open</button> 
<button onclick="filter('closed');"class="closed">Closed</button> 

Die Funktion sieht wie folgt aus:

function filter(st, location) { 
     if(st == "") { 
      document.getElementById("exams").innerHTML = ""; 
      return; 
     } else { 
      if(window.XMLHttpRequest) { 
       var xmlhttp = new XMLHttpRequest(); 
      } else { 
       var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("exams").innerHTML = xmlhttp.responseText; 
       } 
      }; 
      xmlhttp.open("GET", "ajax.php?st="+st+"&location="+location, true); 
}} 

In der ajax.php Datei, die ich überprüft bin für die st Parameter zum Setzen einer Variablen, die ich in meiner Abfrage verwende:

Jetzt möchte ich einen anderen Parameter übergeben Klicken Sie auf eine andere Schaltfläche, um die Daten weiter zu filtern. Ich bin mir nicht sicher, was ich für die Parameter verwenden soll, um das zu erreichen.

<button onclick="filter();" class="new-york">New York</button> 
+0

Wohin möchten Sie einen anderen Parameter übergeben? – Borna

+0

Wenn ich eine andere Schaltfläche wie Ich möchte die Position New York an die zweite filter() übergeben Funktionsargument "Speicherort" –

+1

Wenn Ihre Funktion für die Verwendung von 2 Argumente deklariert ist Übergeben Sie nur eine einzige ... erstellen Sie eine zweite Funktion, die die Position als Parameter erhält. – Borna

Antwort

1

Ich denke, wenn ich so etwas tun würde, ich über die Verwendung einer data Attribut denken kann. Auf diese Weise können Sie mehrere Attribute sowie den Aktionswert übergeben. Es gibt einige Erweiterungsmöglichkeiten gibt es:

<button class="mybutton" data-instructions='{"action":"open","param1":"something","param2":"something else"}'>Open</button> 

Auf der Ajax, senden Sie das Datenobjekt als $_POST (oder $_GET), dann können Sie nur auf der PHP-Seite mit relativer Leichtigkeit greifen. Wenn Sie es so machen, machen Sie nur eine Aktion, die auf die mybutton Klasse auslöst. Möglicherweise gibt es eine Automatisierung, die Sie dort programmieren könnten.

Eine andere Möglichkeit könnte sein, innerHTML zu verwenden, um den Inhalt aus dem angeklickten Element zu erhalten und ihn dann normal an den php weiterzuleiten.

Seitennotiz, wie Sie es haben, ist Ihre SQL offen für die Injektion.

+0

Danke für die Optionen dazu. Ich erkannte heute, dass das, was ich versuchte, keinen Sinn ergab. Stattdessen entschloss ich mich, Radio-Buttons zu erstellen und sie wie Buttons zu stylen. Auf diese Weise kann ich einen Submit-Button haben und es als normale Post-Anfrage über PHP machen. –