Pregunta

Tengo un problema con un "especial" petición Ajax. Tengo un formulario con (etiqueta "Seleccionar") varias combinaciones. Estoy cargando los artículos para cada combinación de una base de datos MySQL, con una clase especial diseñado para mí. Cada Combo tiene un botón "+" (Para Abrir un pop-up y añadir una nueva entrada). Cuando el usuario se "salva" el nuevo valor, la petición AJAX debe correr, pero, nada ocurrirá. Ah, otro detalle:. Cuando el nuevo valor se guarda en la base de datos, el pop-up se cierran automáticamente

Este es el código de Pop-Up (PHP):

<?php
  require ("class\BD.php");
  require ("class\combos.php");
  require ("xajax/xajax_core/xajax.inc.php");
  $Conex = new BD();
  if (isset($_POST['GuardarTipoSist']))
  {
   $Ajax = new xajax();
   function cargarTipoSistema()
   { 
     $Combo = new combos();
     $Combo->setParams('cobTipo',$Conex);
     $Contenido = $Combo->CargarCombo();
     $AjaxResponse = new xajaxResponse();
     $AjaxResponse->assign("cobTipo","innerHTML",$Contenido);
   }
    $Ajax->registerFunction("cargarTipoSistema");
    $TipoSist = $_POST['txtTipoSist'];
    $Query = "INSERT INTO Tipos_Sistemas VALUES(NULL,'$TipoSist')";
    $Conex->query($Query);
    $Ajax->processRequest();
    echo '<script>alert("Guardado Correctamente"); return true; window.close();</script>';
  }
?>

Y este es el código HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Ingresar Tipo Sistema - GESPROGAN</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <style type="text/css">
    <!--
    .Estilo2 {
        font-size: 16px;
        color: #827BCC;
    }
    .Estilo12 {
        color: #FFFFFF;
        font-size: 10px;
        font-weight: bold;
        font-style: italic;
    }
    -->
    </style></head>
    <script type="text/javascript" language="javascript" src="validaciones.js"></script>
    <body>
    <table width="390" height="270" border="1">
      <tr>
        <td bordercolor="#F0F0F0" background="images/dominios tipo sistema.png" width="380" height="264"><p>&nbsp;</p>
        <p>&nbsp;</p>
        <form name="DomTipoSist" action="dominios_tipo.php" method="POST" onsubmit="return validarIngDatHac(); return true;">
        <table width="371" height="166" border="1" align="center">
          <tr>
            <th width="361" height="160" scope="col"><p class="Estilo2">POR FAVOR INGRESE EL NUEVO TIPO DE SISTEMA </p>
              <table width="341" height="68" border="1">
                <tr>
                  <td height="27" colspan="2">
                    <input id="txtTipoSist" name="txtTipoSist" type="text" size="55"/>
                  </td>
                  </tr>
                <tr>
                  <td width="162" height="33">
                    <div align="center">
                      <input id="GuardarTipoSist" name="GuardarTipoSist" type="submit" value="GUARDAR"/>
                    </div>
                  </td>
                  <td width="163">
                    <div align="center">
                      <input id="Cancelar" name="Cancelar" type="button" value="CANCELAR" onclick="javascript:window.close()"/>
                    </div>
                  </td>
                </tr>
              </table>          
              <p class="Estilo2"><span class="Estilo12"> - GESPROGAN.. <strong><em>&copy; </em></strong>Todos los Derechos Reservados 2010- -</span></p>          
            </th>
          </tr>
        </table>  
        </form>    
       </td>
      </tr>
    </table>
    </body>
    </html>

La petición Ajax shoud recargar la Combo en el "Padre-Form", con todas las entradas de la BD (incluido el nuevo).

Mi pregunta es, puedo hacer la petición Ajax en el pop-up? O ¿Cómo puedo hacer esto?

Gracias de antemano!

PD: Lo siento por mi Inglés, no soy un "nativo-altavoz".

¿Fue útil?

Solución

Ejecutar la petición Ajax en la ventana principal no en la ventana emergente. Así, por ejemplo, cuando se envía el formulario en la ventana emergente, hacer un window.opener.cargarTipoSistema ();

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top