Domanda

Sto cambiando un GET in un POST. Attualmente ho .jsp? Id = a, b, c, d. Quando lo cambio in un post, sto ancora seduto sul parametro id a, b, c, d. Questo non funziona per me. Posso inviare un elenco separato da virgole a un parametro post?

È stato utile?

Soluzione

Sbaglio o la maggior parte delle risposte sono a parte il punto?

Per rispondere esattamente alla tua domanda, sì, puoi inviare un elenco separato da virgole a un parametro POST. Ad essere sincero, ho appena provato con uno script PHP, ma non vedo perché Java si comporterebbe diversamente. Un punto con le richieste POST è proprio che hai molti meno vincoli sulla sintassi (non c'è bisogno di scappare = & amp; o simili).

Quindi, se spieghi più in dettaglio cosa " non funziona " forse possiamo aiutarti di più.

Altri suggerimenti

Puoi farlo come un input del modulo selezionato:

url param = valore1 & amp;? Param = valore2 & amp; param = valore3

A seconda della lingua e della libreria, dovresti essere in grado di ottenere una matrice di valori per param.


Ad esempio con asp.net mvc lo faccio per ottenere una matrice di stringhe:

string[] values = Request.Form.GetValues("param");

Fionn ha ragione. Usa

url?param=value1&param=value2&param=value3

per impostare più valori su un singolo parametro. Per leggere i valori nel tuo Servlet / JSP puoi usare

String[] values = request.getParameterValues("param");

Imposta per fare in modo che il tuo parametro fornisca più valori nominandolo come un array. Invece di chiamare l'input " id " ;, chiamalo " id [] "

<form method="post">
<select multiple name="id[]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="send">
</form>

Durante l'elaborazione, ricordarsi di estrarre l'array di valori inviato dal parametro indicato.

Puoi passare più di un parametro usando

        xmlhttp
                .send("files=" + files.value + "&tagcount="
                        + tagcount.value);

Qui file e tagcount sono l'id dei parametri da passare. Questo funzionava per il mio script Ajax. In casi normali puoi semplicemente aggiungere i parametri con & amp; . Quindi i parametri possono apparire come

"parameter1=" + parameter1.value + "&parameter2=" + parameter2.value

nella richiesta post almeno 1 parametro dovrebbe essere presente nell'elenco dei parametri. Se si aggiunge un parametro da richiedere, non funzionerà. per questo è necessario inviare il parametro come campo nascosto del modulo. Oppure prova a utilizzare il seguente codice

funzione makePOSTRequest (url, parametri) {

  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        // set type accordingly to anticipated content type
        //http_request.overrideMimeType('text/xml');
        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }

  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);

}

GET e POST hanno due scopi diversi. Dalla voce HTTP di Wikipedia:

  

GET

     

Richiede una rappresentazione della risorsa specificata. Si noti che GET non deve essere utilizzato per operazioni che causano effetti collaterali, come l'utilizzo per eseguire azioni nelle applicazioni Web. Uno dei motivi è che GET può essere utilizzato in modo arbitrario da robot o crawler, il che non dovrebbe considerare gli effetti collaterali che una richiesta dovrebbe causare. Vedi i metodi sicuri di seguito.

     

POST

     

Invia i dati da elaborare (ad es. da un modulo HTML) alla risorsa identificata. I dati sono inclusi nel corpo della richiesta. Ciò può comportare la creazione di una nuova risorsa o l'aggiornamento di risorse esistenti o entrambi.

Fondamentalmente, dovresti usare GET per ottenere informazioni e POST per qualsiasi azione che modifica lo stato del server, come l'aggiunta di nuovi record.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top