2012-11-05 10 views
5

Sto colpendo un'azione di puntini usando AJAX, tutto va bene ma c'è un problema con Firefox, quando sto passando il parametro in URL come parametro di richiesta e se quel parametro contiene un simbolo di hash (#) alla fine, firefox rimuove tutto ciò che si trova dopo quel simbolo e invia quel parametro all'azione senza di esso. Per esempio, se sto superando test123 # abcd in Firefox, allora sto ottenendo solo test123 in action class invece che test123 # abcd, il che è indesiderabile per il mio requisito. Per IE funziona perfettamente. C'è un modo per quale posso estrarre il parametro completo compreso il simbolo # in Firefox.Passando il simbolo "#" cancelletto nel parametro di richiesta dell'URL che non funziona in Firefox

per favore fatemi sapere se ho bisogno di postare anche il codice azione java, grazie.

JS snippet

var valuePassword=test123#abcd; 

    var url = "/test/ChangePwdAjax.do?newPass="+valuePassword; 
      var xmlHTTP = getXMLHTTPRequest(); 

risposta

10

Usa

var url = "/test/ChangePwdAjax.do?newPass="+ encodeURIComponent(valuePassword); 

Ciò codificare il valuePassword ad un componente URL valido che può essere passato come una stringa di query in URL

e dall'altro lato è necessario utilizzare decodeURIComponent per ottenere il valore dalla stringa codificata

var value = decodeURIComponent(valuePasswordPassed); 

sapere di più su questo Go here

+1

La ragione è che devi codificare i tuoi dati. Un hash (#) non è valido qui, l'hash e tutto ciò che segue non dovrebbe mai lasciare il browser – Onkelborg

+1

Personalmente collegheremo a [questa documentazione] (https://developer.mozilla.org/en-US/ docs/JavaScript/Reference/Global_Objects/encodeURIComponent) invece di w3schools (che hanno la tendenza a produrre documentazione sotto-par). –

+0

Grazie a tutti, funziona, prima ero limitato dal mio processo di pensiero poiché in IE funzionava bene. Mi chiedevo anche perché entrambi i browser si comportassero in modo diverso, sono d'accordo che la stringa di query URL deve essere codificata. Grazie – user1697113

1

Quando si modificano i dati che devi fare una richiesta HTTP POST. Non una richiesta GET. Questo risolverà automaticamente il tuo problema senza dover codificare la tua password.

xmlhttp.open("POST", "/test/ChangePwdAjax.do", true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlhttp.send("newPass=" + valuePassword); 
+0

L'ho provato cambiando xmlHTTP.open ("GET", url, true); a xmlHTTP.open ("POST", url, true); ma è lo stesso. Non è sicuro se lo faccio correttamente. Ma la codifica ha risolto il mio scopo. Grazie. – user1697113

+0

@ user1697113 I valori non dovrebbero essere nella url ma nel corpo. Aggiornerò la mia risposta – ZippyV

Problemi correlati