tengo un problema por favor ayuda cuando hago clic en el botón pasa solo una matriz (altavoz) sin ningún otro parámetro (sub, componer) trato de enviar solo el parámetro (sub, componer) pero no pasa, lo necesito cuando hago clic botón pasar todo (matriz (altavoz) y (sub, componer) este es el código hrml
<multi-input> <input list="speakers"> <datalist id="speakers"> <option value="Banquo"></option> <option value="Bishop Stokesly of London"></option> <option value="Caesar's Second Watchman"></option> <option value="Celia"></option> <option value="Cleopatra"></option> <option value="Dogberry"></option> <option value="Falstaff"></option> <option value="First Servant"></option> <option value="Hamlet"></option> <option value="Juliet"></option> <option value="Macbeth"></option> </datalist> </multi-input> <div class="form-group"> <input class="form-control" placeholder="Subject:" id="sub"> </div> <div class="form-group"> <textarea id="compose" class="form-control" style="height: 300px"> <button type="submit" name="submit" class="btn btn-primary" id="get"><i class="far fa-envelope"></i> Send</button>
y este es el código js
const getButton = document.getElementById('get'); var sub = document.getElementById('sub').value; var compose= document.getElementById('compose').value; const multiInput = document.querySelector('multi-input'); getButton.onclick = () => { var src="sent.php?sub="+multiInput.getValues()+'&sub='+sub+'&compose='+compose+''; window.location.href=src; }
solo la matriz (entrada múltiple) pasa a la otra, ¿no por qué?
Para especificar su matriz como parámetros de URL, debe agregar "[]" antes del signo "=". De esa manera, php lo reconoce como una matriz. De lo contrario, el valor será solo una cadena.
/*------ Change This -------*/ var src="sent.php?sub="+multiInput.getValues()+'&sub='+sub+'&compose='+compose+''; window.location.href=src; /*----- To this -------*/ var src="sent.php?sub[]="+multiInput.getValues()+'&sub='+sub+'&compose='+compose+''; window.location.href=src;
En segundo lugar, dado que su función 'onclick' no actualiza los valores de las variables que ha definido anteriormente; simplemente no obtiene el valor más reciente de ellos. Para resolver este problema basta con mover variables dentro de la función.
const getButton = document.getElementById('get'); const multiInput = document.querySelector('multi-input'); getButton.onclick = () => { /*----- Define them in here -------*/ var sub = document.getElementById('sub').value; var compose= document.getElementById('compose').value; var src="sent.php?sub="+multiInput.getValues()+'&sub='+sub+'&compose='+compose+''; window.location.href=src; }