2016-12-10 1 views
-1

Ich versuche, die PHP GET-Methode verwenden, um ein Array von Schlüsselwörtern aus einem Feld KeywordBox auf einer anderen Seite zu erstellen. Hier

ist ein Beispiel für die auf der Seite URL angehängt Schlüsselwörter:

/searchResults.php?keywordBox=computing+finance

Das sieht mir in Ordnung, aber wenn ich in ein JSON-Objekt konvertieren es scheint die Schlüsselwörter eine einzelne Zeichenfolge („Rechen Finance“) werden eher als Array von Strings ([ „Berechnen“, „Finanzen“])

var keywords = <?php echo json_encode($_GET['keywordBox']) ?>; 
alert(keywords[0]); // output "c" 

ich dachte, das ausgeben würde das erste Wort in dem Feld „Berechnen“ statt es gibt das erste Zeichen "c" aus, also bin ich beleuchtet Diese Sprachen sind verwirrt und neu. Jede Erklärung sehr geschätzt.

+0

json_encode gibt eine Zeichenkette zurück und der Index der Zeichenkette 0 ist das erste Zeichen. –

+0

@Taplar Das ist nicht korrekt. Sie führen 'JSON.parse()' nur für Strings aus, die JSON enthalten, aber die Ausgabe wird hier eine literale Zeichenfolge sein: "computing finance". –

Antwort

1

keywordBox kann ein Array sein, nur mit dem Query-String ändern:

?keywordBox[]=computing&keywordBox[]=finance 

Ansonsten kann man es als eine Zeichenfolge halten, und explode es.

var keywords = <?php echo json_encode(explode(' ', $_GET['keywordBox'])) ?>; 
+0

Vielen Dank für Ihre Antwort, ich werde entscheiden, ob die Verwendung der Array-Notation in der URL, wie Sie vorgeschlagen oder mit explode meine Bedürfnisse besser – djmcdee

0

Achten Sie darauf, was Sie codieren.

Dies nur kodiert ein Parameter GET, nicht das $_GET superglobalen Array:

var keywords = <?php echo json_encode($_GET['keywordBox']) ?>; 

Mit Ihrer angegebenen URL und den Parameter keywordBox=computing+finance wird $_GET['keywordBox'] einen einzelnen String enthält, "computing finance", kein Array. Wenn der Parameter ein Array enthalten soll, müssen Sie die Array-Notation wie in keywordBox[]=computing&keywordBox[]=finance verwenden.

+1

Ah ich sehe, danke für Ihre Antwort, ich dachte, dass ich ein Array kodiert, aber offensichtlich nicht. – djmcdee

Verwandte Themen