Hola todos =D, les presento mi problema, estoy haciendo un sistema de venta e inventario. Tengo una seccion que permite agregar el nombre del producto o el codigo de barras a la venta del momento. El problema que se me presenta es que quiero introducir el codigo de barras y que en la lista de productos aparezca su nombre asociado o aparezca un alert diciendo que el codigo de barras no existe, y si se agrega un producto colocar su nombre en la lista si esta almacenado en la base de detos o decir que este no existe en caso contrario. Quiero hacer esto sin recargar la pagina, ahi es donde entra AJAX, llamo a un script en php que revisa la base de datos el nombre que se le fue enviado por parametro o el codigo de barras se#alado, e imprime el nombre del producto o "" en caso de no encontrarlo. Despues tengo que ejecutar ciertas instrucciones segun el resultado del script, pero aun no tengo el resultado de la llamada asincrona. Quisiera saber como puedo hacer para obtener el resultado del script y luego hacer las comprobaciones. Aqui posteo mi codigo para que quede mas explicito el problema.
Código:
...
function venta_existe_producto (producto, tipo)
{
var post; //Datos que seran pasados al archivo
post="nombre="+producto+"&tipo="+tipo;
var url="../inventario/verificarExistencia.php"; //Archivo a donde seran enviados los datos
var xmlhttp=crearAjax(); //Se crea una instancia de la pagina
if (xmlhttp==null) {
alert("Su navegador no soporta AJAX");
return;
}
xmlhttp.onreadystatechange =
function listo()
{
if (xmlhttp.readyState==4) { //La solicitud finalizo
if (xmlhttp.status==200) { //Finalizo correctamente
nombre=xmlhttp.responseText;
}
else { //Error
nombre=-1;
}
}
}
xmlhttp.open ('POST', url, true); //Se abre la url solicitada
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send (post); //Se envian los datos necesarios en caso de abrirse la url con el metodo POST
}
function venta_cantidad_valida (cantidad)
{
if (cantidad.match(/^\d+$/)==null) {
return false;
}
return true;
}
function venta_comprobar()
{
venta_actualizar();
var i;
var error=false;
var resultado;
for (i=0; i<venta_num_entradas; i++) {
venta_existe_producto(venta_nombre_producto[i], 1);
if (nombre=="") {
resultado=0;
}
else if (nombre==-1) {
resultado=-1;
}
else {
resultado=1;
}
if (resultado==0) {
error=true;
alert("Producto "+venta_nombre_producto[i]+" no existe");
}
else if (!venta_cantidad_valida(document.getElementById("cant"+i).value)) {
error=true;
alert("Cantidad de "+venta_nombre_producto[i]+": "+document.getElementById("cant"+i).value+" no es valida");
}
}
return error;
}
...
Esta parte especifica del codigo, muestra cuando tengo ya la lista de productos y quiero hacer una ultima verificacion antes de enviarla. Vuelvo a revisar si el nombre existe (por si acaso el producto fue eliminado, en el intervalo de tiempo en que el objeto fue agregado a la lista y el momento en que se hace la venta) y si la cantidad del producto es valida (un natural). Si puedo arreglar esta ultima validacion ya lo de colocar el nombre asociado al codigo de barras o comprobar si existe el producto al momento de enviarlo a la lista, tendria la misma solucion.
Encantado de recibir ayuda en el tema