lo que hace es aumentar una linea cada vez que el usuario agrege un producto.
Código PHP:
Ver original
<?php require_once('xajax/xajax.inc.php'); //incluimos la librelia xajax function eliminarFila($id_campo, $cant_campos){ $respuesta = new xajaxResponse(); $respuesta->addRemove("rowDetalle_$id_campo"); //borro el detalle que indica el parametro id_campo -- $cant_campos; //Resto uno al numero de campos y si es cero borro todo if($cant_campos == 0){ $respuesta->addRemove("rowDetalle_0"); $respuesta->addAssign("num_campos", "value", "0"); //dejo en cero la cantidad de campos para seguir agregando si asi lo desea el usuario $respuesta->addAssign("cant_campos", "value", "0"); } $respuesta->addAssign("cant_campos", "value", $cant_campos); return $respuesta; } function cancelar(){ //elimina todo el contenido de la tabla y vuelve a cero los contadores $respuesta = new xajaxResponse(); $respuesta->addRemove("tbDetalle"); //vuelve a crear la tabla vacia $respuesta->addCreate("tblDetalle", "tbody", "tbDetalle"); $respuesta->addAssign("num_campos", "value", "0"); $respuesta->addAssign("cant_campos", "value", "0"); return $respuesta; } function agregarFila($formulario){ $respuesta = new xajaxResponse(); $id_campos = $cant_campos = $num_campos+1; $str_html_td1 = $isbn . '<input type="hidden" id="isbn' . $id_campos . '" name="isbn' . $id_campos . '" value="' . $isbn . '"/>' ; $str_html_td2 = "$titulo" . '<input type="hidden" id="titulo' . $id_campos . '" name="titulo' . $id_campos . '" value="' . $titulo . '"/>' ; $str_html_td3 = "$autor" . '<input type="hidden" id="autor' . $id_campos . '" name="autor' . $id_campos . '" value="'; $autor . '"/>' ; $str_html_td6 = '<img src="images/delete.png" width="16" height="16" alt="Eliminar" onclick="if(confirm(\'Realmente desea eliminar este detalle?\')){xajax_eliminarFila('. $id_campos .', proyecto.cant_campos.value);}"/>'; $str_html_td6 .= '<input type="hidden" id="hdnIdCampos_'. $id_campos .'" name="hdnIdCampos[]" value="'. $id_campos .'" />'; if($num_campos == 0){ // creamos un encabezado de lo contrario solo agragamos la fila $respuesta->addCreate("tbDetalle", "tr", "rowDetalle_0"); $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_01"); //creamos los campos $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_02"); $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_03"); $respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_06"); $respuesta->addAssign("tdDetalle_01", "innerHTML", "ISBN"); //asignamos el contenido $respuesta->addAssign("tdDetalle_02", "innerHTML", "Titulo"); $respuesta->addAssign("tdDetalle_03", "innerHTML", "Autor"); $respuesta->addAssign("tdDetalle_06", "innerHTML", "Eliminar"); } $idRow = "rowDetalle_$id_campos"; $idTd = "tdDetalle_$id_campos"; $respuesta->addCreate("tbDetalle", "tr", $idRow); $respuesta->addCreate($idRow, "td", $idTd."1"); //creamos los campos $respuesta->addCreate($idRow, "td", $idTd."2"); $respuesta->addCreate($idRow, "td", $idTd."3"); $respuesta->addCreate($idRow, "td", $idTd."6"); /* * Esta parte podria estar dentro de algun ciclo iterativo */ $respuesta->addAssign($idTd."1", "innerHTML", $str_html_td1); //asignamos el contenido $respuesta->addAssign($idTd."2", "innerHTML", $str_html_td2); $respuesta->addAssign($idTd."3", "innerHTML", $str_html_td3); $respuesta->addAssign($idTd."6", "innerHTML", $str_html_td6); /* aumentamos el contador de campos */ $respuesta->addAssign("num_campos","value", $id_campos); $respuesta->addAssign("cant_campos" ,"value", $id_campos); return $respuesta; } ?> <?php include ("conexion.php"); ?> <?php $xajax=new xajax(); // Crea un nuevo objeto xajax $xajax->setCharEncoding("UTF-8"); // le indica la codificación que debe utilizar $xajax->decodeUTF8InputOn(); // decodifica los caracteres extraños $xajax->registerFunction("agregarFila"); //Registramos la función para indicar que se utilizará con xajax. $xajax->registerFunction("cancelar"); $xajax->registerFunction("eliminarFila"); $xajax->registerFunction("guardar"); $xajax->processRequests(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Pragma"content="no-cache; charset=utf-8" /> <meta http-equiv="expires"content="0"> <link href="css/buslogin.css" rel="stylesheet" type="text/css"> <link href="css/contacto.css" rel="stylesheet" type="text/css"> <link href="css/contenedor.css" rel="stylesheet" type="text/css" /> <link href="css/espacio.css" rel="stylesheet" type="text/css"> <link href="css/estilocarrito.css" rel="stylesheet" type="text/css"> <link href="css/estilos.css" rel="stylesheet" type="text/css"> <link href="css/lateral.css" rel="stylesheet" type="text/css"> <link href="css/todo.css" rel="stylesheet" type="text/css"> <link href="css/menu.css" rel="stylesheet" type="text/css"> <link href="css/paginator.css" rel="stylesheet" type="text/css"> <link href="css/todito.css" rel="stylesheet" type="text/css"> <link href="css/menudesp.css" rel="stylesheet" type="text/css" /> <script src="../Scripts/AC_RunActiveContent.js" type="text/javascript"></script> <title>internacional</title> </head> <?php $xajax->printJavascript("xajax"); //imprime el codigo javascript necesario para que funcione todo. ?>
en mi servidor de prueba funciona correctamente
pero en el hosting arroja este error:
error: the XML response that was returned from the server is invalid.
received:
<?xml version="1.0" encoding="iso-8859-1"?><xjx>
al final dice:
You havve whidespace in your response.
pero no creo que sea el problema
pues como digo, en mi servidor de prueba funciona.
he puesto al comienzo y al fina ob_start y ob_ flush respectivamente por asuntos de header
que me dicen?