como puedo pasar el array de un formulario que repite document.form_partes.elements['cantidad[]'];
barcos.php
function visualizarpartes() {
var str=document.form_partes.elements['cantidad[]'];
for (i=0; i< str.length; i++) {
if(str[i].length==0)
{
document.getElementById("visualizar_partes").innerHTML="no hay datos";
return;
}
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("visualizar_partes").innerHTML = xhttp.responseText;
}
}
xhttp.open("GET", "ajax_visualizar_partes.php?cantidad="+str[i], true);
xhttp.send();
}
}
ajax_visualizar_partes.php
foreach($cantidad as $numero){
echo $numero;
}
Tu pregunta no tiene sentido. :huh: Creo que hay que pulir bastante esa destreza para escribir mensajes razonables.
var str=document.form_partes.elements['cantidad[]'];
for (i=0; i< str.length; i++) {
alert(str[i].value);
}
esto lo que hace es sacar de un formulario la casilla name=cantidad[], es decir la casilla cantidad se repite varias veces. entonces lo que me muestra lo de arriba es 1300,1200,1100 del formulario form_partes de name="cantidad[]", yo lo que quiero es pasar esos 1300, 1200 y 1100 por GET, como lo harias tu? el alert me muestra esos 3 datos pero no consigo que vaya mas aya, tu que harias?
Cita de: tecasoft en 28 Octubre 2015, 03:00 AM
var str=document.form_partes.elements['cantidad[]'];
for (i=0; i< str.length; i++) {
alert(str[i].value);
}
esto lo que hace es sacar de un formulario la casilla name=cantidad[], es decir la casilla cantidad se repite varias veces. entonces lo que me muestra lo de arriba es 1300,1200,1100 del formulario form_partes de name="cantidad[]", yo lo que quiero es pasar esos 1300, 1200 y 1100 por GET, como lo harias tu? el alert me muestra esos 3 datos pero no consigo que vaya mas aya, tu que harias?
Eso entonces no es un string. Es un arreglo, o un objeto parecido a un arreglo.
var arr = document.form_partes.elements['cantidad[]']
var qs = Array.prototype.reduce(arr, function (qs, cantidad) {
if (cantidad.length > 0) {
qs += (qs === '') ? ('cantidad[]=' + cantidad.value) : ('&cantidad[]=' + cantidad.value);
}
return qs;
}, '');
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("visualizar_partes").innerHTML = xhttp.responseText;
}
}
xhttp.open("GET", "ajax_visualizar_partes.php?" + qs, true);
xhttp.send();
qs deberia ser:
cantidad[]=1300&cantidad[]=1200&cantidad[]=1100
habria alguna forma de no hacerlo con protoype y que sea con jquery? ademas me arroja un error:
[object HTMLInputElement]Hey[object HTMLInputElement][object HTMLInputElement]
ademas y si fuera el name=cantidad[] infinito* ese codigo no serviria ya que le tienes que poner manualmente el codigo.
Muchas gracias
Cita de: tecasoft en 28 Octubre 2015, 03:24 AM
habria alguna forma de no hacerlo con protoype y que sea con jquery? ademas me arroja un error:
[object HTMLInputElement]Hey[object HTMLInputElement][object HTMLInputElement]
Pues... habias puesto codigo en javascript sin jQuery, me imaginaba que no estabas utilizando jQuery (que por cierto actualize la respuesta... ahora deberia funcionar).
Con jQuery, no se si se pueda:
var qs = $.param($('input[name="cantidad[]"]').map(function (ind, elem) {
return {
name: 'cantidad[]',
value: elem.value
}
}).get());
El problema con los metodos de serialize y param es que escapan los strings con percent encoding. No estoy seguro si PHP recoja los nombres correctamente.
Cita de: tecasoft en 28 Octubre 2015, 03:24 AM
ademas y si fuera el name=cantidad[] infinito* ese codigo no serviria ya que le tienes que poner manualmente el codigo.
Muchas gracias
En ningún lugar has puesto esa validación? Yo solo use las validaciones que usaste en tu primer código. De todas formas, es bastante sencillo agregar otras validaciones....
var arr = document.form_partes.elements['cantidad[]']
var qs = Array.prototype.reduce(arr, function (qs, cantidad) {
if (cantidad.length > 0 && typeof parseInt(cantidad, 10) === 'number') {
qs += (qs === '') ? ('cantidad[]=' + cantidad.value) : ('&cantidad[]=' + cantidad.value);
}
return qs;
}, '');
lo tengo asi ahora pero no me chuta y tengo jquery activado.
var qs = $.param($('input[name="cantidad[]"]').map(function (ind, elem) {
return {
name: 'cantidad[]',
value: elem.value
}
}).get( "ajax_visualizar_partes.php", function( data ) {
$( "#visualizar_partes" ).html( data );
})
);
Porque el get que he puesto no es para hacer AJAX.
var qs = $.param($('input[name="cantidad[]"]').map(function (ind, elem) {
return {
name: 'cantidad[]',
value: elem.value
}
}).get());
$.get( "ajax_visualizar_partes.php?"+qs, function( data ) {
$( "#visualizar_partes" ).html( data );
}