Comment faire une demande AJAX Dans un JS Popup?
Question
J'ai un problème avec une demande AJAX « spécial ». J'ai un formulaire avec plusieurs combos (balise « Select »). Je chargement des articles pour chaque combo à partir d'une base de données MySQL, avec une classe spécialement conçue pour moi. Chaque Combo a un bouton "+" (Pour ouvrir un pop-up et ajouter une nouvelle entrée). Lorsque l'utilisateur « sauve » la nouvelle valeur, la demande d'AJAX devrait fonctionner, mais rien ne se passe. Ah, un autre détail:. Lorsque la nouvelle valeur il est enregistré dans la base de données, la fermeture automatique pop-up
Voici le code 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>';
}
?>
Voici le code 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> </p>
<p> </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>© </em></strong>Todos los Derechos Reservados 2010- -</span></p>
</th>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
La demande AJAX qui devraient recharger le Combo dans le « Parent-Form », avec toutes les entrées de la BD (Inclus le nouveau).
Ma question est, je peux faire la demande d'AJAX dans le Pop-Up? Ou Comment puis-je faire?
Merci à l'avance!
PS: Désolé pour mon anglais, je ne suis pas un « locuteur natif ».
La solution
Exécuter la requête Ajax dans la fenêtre principale pas dans le menu contextuel. Ainsi, par exemple, lorsque vous soumettez le formulaire dans le menu contextuel, faites une window.opener.cargarTipoSistema ();