562 Stimmen

Wie kann man ein Array in einer Abfragezeichenfolge übergeben?

Gibt es eine Standardmethode zur Übergabe eines Arrays durch eine Abfragezeichenfolge?

Um klar zu sein, habe ich eine Abfragezeichenfolge mit mehreren Werten, von denen einer ein Array-Wert sein würde. Ich möchte, dass Abfragezeichenfolge Wert als ein Array behandelt werden - ich möchte nicht, dass das Array aufgelöst werden, so dass es ununterscheidbar von den anderen Abfragezeichenfolge Variablen ist.

Außerdem, so heißt es hier Antwort abschicken schlägt der Autor vor, dass die Unterstützung von Abfragezeichenfolgen für Arrays nicht definiert ist. Ist dies richtig?

EDITAR:

Ausgehend von der Antwort von @Alex gibt es keine Standardmethode, um dies zu tun, also lautet meine nächste Frage: Wie kann man auf einfache Weise erkennen dass der Parameter, den ich lese, in beiden Fällen ein Array ist PHP y Javascript ?

Wäre es akzeptabel, mehrere Parameter mit dem gleichen Namen zu benennen, und auf diese Weise würde ich wissen, dass sie zu einem Array gehören? Beispiel:

?myarray=value1&myarray=value2&myarray=value3...

Oder wäre dies eine schlechte Praxis?

0 Stimmen

Welches Framework verwenden Sie? Einige Frameworks haben Methoden, die helfen, Arrays an Querystrings zu übergeben.

0 Stimmen

@keyboardP- PHP und Javascript, je nach Anwendungsfall

2 Stimmen

Warum sollten Sie das tun, wenn Sie einfach sagen könnten:?myarray=value1,value2,value3

12voto

Will59 Punkte 1067

Beachten Sie, dass das query-string-Modul die verschiedenen Arten der Array-Kodierung auflistet, die es unterstützt ( https://www.npmjs.com/package/query-string ):

Zum Beispiel kann {foo: ['1', '2', '3']} wie folgt kodiert werden:

'foo[]=1&foo[]=2&foo[]=3'
'foo[0]=1&foo[1]=2&foo[3]=3'
'foo=1,2,3'
'foo=1&foo=2&foo=3'
// Any custom separator can be used:
'foo=1|2|3'
// ... and more custom formats

Dies zeigt, dass es viele Lösungen gibt, die angenommen werden...

7voto

vara Punkte 71

Ich denke, es wäre hilfreich für jemanden, der für die Übergabe des Arrays in einer Abfragezeichenfolge an ein Servlet sucht. Ich testete unten Abfragezeichenfolge und war in der Lage, die Array-Werte mit req.getgetParameterValues(); Methode zu erhalten. Unten ist die Abfragezeichenfolge, die ich durch Browser übergeben.

  http://localhost:8080/ServletsTutorials/*.html? 
  myname=abc&initial=xyz&checkbox=a&checkbox=b

checkbox ist hier mein Parameter-Array.

4voto

Lini Punkte 141

Ich verwende React und Rails. Ich habe:

js

  let params = {
    filter_array: ['A', 'B', 'C']
  }

  ...

  //transform params in URI

  Object.keys(params).map(key => {
    if (Array.isArray(params[key])) {
      return params[key].map((value) => `${key}[]=${value}`).join('&')
    }
  }
  //filter_array[]=A&filter_array[]=B&filter_array[]=C

2voto

DCShannon Punkte 2185

Sie erwähnen PHP und Javascript in Ihrer Frage, aber nicht in den Tags. Ich erreichte diese Frage mit der Absicht der Übergabe eines Arrays an eine MVC.Net-Aktion.

Ich habe die Antwort auf meine Frage gefunden aquí : Das erwartete Format ist das, das Sie in Ihrer Frage vorgeschlagen haben, mit mehreren Parametern mit demselben Namen.

2 Stimmen

Auch wenn dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzuführen und den Link als Referenz anzugeben. Antworten, die nur einen Link enthalten, können ungültig werden, wenn sich die verlinkte Seite ändert.

0 Stimmen

@Andrew Es ist nicht nur ein Link als Antwort. "Das erwartete Format ist das, das Sie in Ihrer Frage vorgeschlagen haben, mit mehreren Parametern, die denselben Namen haben."

1voto

keyboardP Punkte 67673

Sie können verwenden http_build_query um einen URL-kodierten Querystring aus einem Array in PHP zu erzeugen. Während der resultierende Querystring expandiert wird, können Sie sich für ein eindeutiges Trennzeichen entscheiden, das Sie als Parameter für die http_build_query Methode, so dass Sie bei der Dekodierung prüfen können, welches Trennzeichen verwendet wurde. Wenn es das eindeutige war, das Sie gewählt haben, dann wäre das der Array-Querystring, andernfalls wären es die normalen Querystrings.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X