POST più parametri

Sto cambiando un Get a un post. Attualmente ho .jsp? Id = a, b, c, d. Quando si cambia questo in un post sono ancora seduto il parametro id a, b, c, d. Questo non funziona per me. Posso inviare una lista separata da virgola a un parametro post?

Mi sbaglio o la maggior parte delle risposte sono al di là del punto?

Per rispondere precisamente alla tua domanda, sì, puoi inviare una lista separata da virgola a un parametro POST. Per essere onesti, ho appena fatto un rapido tentativo con uno script PHP, ma non vedo perché Java si comporterebbe in modo diverso. Un punto con le richieste POST è precisamente che si hanno meno vincoli sulla syntax (non c’è bisogno di escape = & o tale).

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

Puoi farlo come un modulo di selezione:

url? param = value1 & param = valore2 & 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 un array di stringhe:

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

Fionn ha ragione. Uso

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

per impostare più valori su un singolo parametro. Per leggere i valori in Servlet / JSP che è ansible utilizzare

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

Impostare in modo che il parametro fornisca più valori nominandolo come matrice. Invece di chiamare l’input “id”, chiamalo “id []”

 

Durante l’elaborazione, ricorda di estrarre la matrice di valori inviati dal parametro denominato.

È ansible passare più di un parametro utilizzando

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

Qui file e tagcount sono l’id dei parmeters da passare. Questo funzionava per il mio Ajax Script. In casi normali puoi semplicemente aggiungere i parametri con & . Quindi i parametri possono essere simili

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

nel parametro post richiesta minimo 1 dovrebbe essere presente nell’elenco dei parametri. Se si aggiunge il parametro alla richiesta, non funzionerà. per questo devi inviare parametri come campo nascosto del modulo. Oppure prova a usare il seguente codice

function makePOSTRequest (url, parameters) {

  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:

OTTENERE

Richiede una rappresentazione della risorsa specificata. Si noti che GET non deve essere utilizzato per operazioni che causano effetti collaterali, come il suo utilizzo per l’esecuzione di azioni nelle applicazioni Web. Una ragione per questo è che GET può essere usato arbitrariamente da robot o crawler, che non dovrebbero considerare gli effetti collaterali che una richiesta dovrebbe causare. Vedi i metodi sicuri di seguito.

INVIARE

Invia i dati da elaborare (ad esempio da un modulo HTML) alla risorsa identificata. I dati sono inclusi nel corpo della richiesta. Ciò potrebbe comportare la creazione di una nuova risorsa o gli aggiornamenti di risorse esistenti o entrambi.

In sostanza, è necessario utilizzare GET per, beh, ottenere informazioni e POST per tutte le azioni che alterano lo stato del server, come l’aggiunta di nuovi record.