Ajax生成的表单也有一个ajax调用

时间:2011-07-04 04:02:48

标签: php ajax forms function nested

Hello Stackoverflow!,

好吧这个问题可能很长,但首先我要写下我想要完成的事情。

我有一个下拉菜单和'region'(国家/地区),当选择某个地区时,会有一个函数onchange 获取该值并转到 AJAX函数,回显结果的php文件(该区域中的客户端),这个结果也为每个客户端回显一个表单,这个表单基本上是删除和编辑按钮即可。

当我点击编辑时,这也是 AJAX调用功能,它可以回显另一种形式,我可以编辑注册表

index.php

中的

脚本

<script type="text/javascript">
        function showUser(str){
            if (str=="")
              {
              document.getElementById("mostrarClientes").innerHTML="";
              return;
              } 
            if (window.XMLHttpRequest)
              {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
              }
            else
              {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("mostrarClientes").innerHTML=xmlhttp.responseText;
                }
              }
            document.getElementById("mostrarClientes").innerHTML='Espere un momento porfavor...';  
            xmlhttp.open("GET","verClientesAjax.php?ver="+str,true);
            xmlhttp.send();
        }

        function editUser(str){
            if (str=="")
              {
              document.getElementById("editarClientes").innerHTML="";
              return;
              } 
            if (window.XMLHttpRequest)
              {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
              }
            else
              {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                document.getElementById("editarClientes").innerHTML=xmlhttp.responseText;
                }
              }
            document.getElementById("editarClientes").innerHTML='Espere un momento porfavor...';  
            xmlhttp.open("GET","editarClientesAjax.php?edit="+str,true);
            xmlhttp.send();
        }
</script>

这是我的index.php //索引页

<form name="form2">
   <select name="regiones" onchange="showUser(this.value)">
   <option>Seleccione una region</option>
     <?php
        while($row = mysql_fetch_assoc($resultRegion)){             
           echo "<option value=\"".$row['idRegion']."\">".$row['nombre']."</option><br/>";
        }
     ?>
    </select>
</form>
<br />
<div id="mostrarClientes"><b>clients by region</b></div>
<div id="editarClientes"><b>form to edit the client</b></div>

这是我的verCliente.php //这是我在该地区展示客户的第一个ajax调用

<?php
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db_clients") or die(mysql_error());
header("Content-type: text/html; charset=windows-1252");

//////THIS IS THE FUNCTION THAT PRINTS THE FORM TO EDIT (IT'S IN THE RETURN)    
function repr($pair){
    list($a, $b) = $pair;
return "<form name=\"formEdit$b\"> <div style=\"float:left; margin-right:3px\">&#149; $a</div> <div style=\"float:right\"> <input type=\"image\" name=\"edit\" src=\"edit.gif\" border=\"0\" title=\"editar\" value=\"$b\" onClick=\"editUser(this.value)\"></> <input type=\"image\" name=\"del\" src=\"delete.gif\" border=\"0\" title=\"eliminar\" value=\"$b\" onClick=\"if (!confirm('seguro que desea ELIMINAR el registro \'$a\' ?')) {return false} else{delUser(this.value)}\"></> </div> </form>"; 
}
////////////////////

//////codigo para mostrar clientes  
$numReg=$_GET["ver"];

$nombreProvincia = "";
$nombreComuna = "";
$nombreGiro = "";
$nombreNombre = array();

$resultRegion = mysql_query("SELECT idRegion, nombre FROM region WHERE idRegion = '$numReg'");
$titleRegion= mysql_fetch_array($resultRegion);
$resultClientes = mysql_query("SELECT nombre.idNombre AS idNombre, nombre.nombre AS nombreNombre, comuna.nombre AS nombreComuna, giro.nombre AS nombreGiro, provincia.nombre AS nombreProvincia, provincia.region_idRegion AS idRegion FROM nombre INNER JOIN comuna ON nombre.Comuna_idComuna = comuna.idComuna INNER JOIN giro ON nombre.Giro_idGiro = giro.idGiro INNER JOIN provincia ON comuna.Provincia_idProvincia = provincia.idProvincia WHERE provincia.region_idRegion = '$numReg' ORDER BY nombreProvincia, nombreComuna, nombreGiro, nombreNombre");   
$num_results = mysql_num_rows($resultClientes);

echo '<h2>'.$titleRegion['nombre'].'</h2>';

if ($num_results > 0){  
    while ($row = mysql_fetch_assoc($resultClientes)) {
        if ($nombreProvincia == $row['nombreProvincia']) {
            if ($nombreComuna == $row['nombreComuna']) {
                if ($nombreGiro == $row['nombreGiro']) {
                    $nombreNombre[] = $row['nombreNombre'];
                    array_push($nombreNombre,$row['idNombre']);
                }
                else { //nombreGiro
                    $nombreNombre = array_chunk($nombreNombre, 2);
                    $nombreNombre = array_map("repr", $nombreNombre);
                    echo '<td style="background-color: #CCCCFF">' .implode('<br />', $nombreNombre).'';
                    $nombreGiro = $row['nombreGiro'];
                    echo '</ul></td></tr><tr><td style="background-color: #FFF084">'.$nombreGiro.'</td>';
                    $nombreNombre = array($row['nombreNombre']);
                    array_push($nombreNombre,$row['idNombre']);
                }
            }
            else { // nombreComuna
                $nombreNombre = array_chunk($nombreNombre, 2);
                $nombreNombre = array_map("repr", $nombreNombre);
                echo '<td style="background-color: #CCCCFF">' . implode('<br />', $nombreNombre).'</td></tr>';
                $nombreComuna = $row['nombreComuna'];
                echo '<tr><td colspan="2" style="background-color: #FFCC00"><h4 style="margin: 0">'.$nombreComuna.'</h4></td></tr>';
                $nombreGiro = $row['nombreGiro'];
                echo '<tr><td style="background-color: #FFF084">'.$nombreGiro.'</td>';
                $nombreNombre = array($row['nombreNombre']);
                array_push($nombreNombre,$row['idNombre']);
            }
        }
        else { // nombreProvincia
            if (!empty($nombreNombre)) {
                $nombreNombre = array_chunk($nombreNombre, 2);
                $nombreNombre = array_map("repr", $nombreNombre);
                echo '<td style="background-color: #CCCCFF">' . implode('<br />', $nombreNombre).'</td></tr></table>';
            }

            $nombreProvincia = $row['nombreProvincia'];
            echo '<table cellspacing="1" style="background-color:#000000; float:left;margin-right:10px"><tr><td colspan="2" style="background-color: #FF6600; text-align:center"><h3 style="margin: 0">'.$nombreProvincia.'</h3></td></tr>';
            $nombreComuna = $row['nombreComuna'];
            echo '<tr><td colspan="2" style="background-color: #FFCC00"><h4 style="margin: 0">'.$nombreComuna.'</h4></td></tr>';
            $nombreGiro = $row['nombreGiro'];
            echo '<tr><td style="background-color: #FFF084">'.$nombreGiro.'</td>';
            $nombreNombre = array($row['nombreNombre']);
            array_push($nombreNombre,$row['idNombre']);
        }
    }
    if (!empty($nombreNombre)) {
        $nombreNombre = array_chunk($nombreNombre, 2);
        $nombreNombre = array_map("repr", $nombreNombre);
        echo '<td style="background-color: #CCCCFF">' . implode('<br />', $nombreNombre).'</td></tr></table>';  
    }
}
        else{echo '<p>ningun dato fue encontrado aqui!</p>';}


?>

这是我的editCliente.php //这是我编辑客户端信息的嵌套ajax调用

<?php
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("db_clients") or die(mysql_error());
header("Content-type: text/html; charset=windows-1252");

$regEdit=$_GET["edit"];

//////dropbox results para EDITAR  
$resultComunaEdit = mysql_query("SELECT idComuna, nombre FROM comuna ORDER BY nombre ASC");
$resultGiroEdit = mysql_query("SELECT idGiro, nombre FROM giro ORDER BY nombre ASC");
/////////////////////
$editSql=mysql_query("SELECT nombre.idNombre AS idNombre, comuna.nombre AS comuna, giro.nombre AS giro, nombre.nombre AS nombre FROM nombre INNER JOIN comuna ON nombre.Comuna_idComuna = comuna.idComuna INNER JOIN giro ON nombre.Giro_idGiro = giro.idGiro WHERE idNombre = '$regEdit'");
$rowEdit = mysql_fetch_array($editSql);

$regName=$rowEdit['nombre'];
$regComuna=$rowEdit['comuna'];
$regGiro=$rowEdit['giro'];

echo '<h3>========================EDITAR CLIENTES====================================</h3>';
echo 'editando registro numero: '.$regEdit.'';
echo "<form name=\"editor\" method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\"><div align=\"center\">";
echo "NOMBRE CLIENTE (max 16): <input name=\"nombreNuevo\" type=\"text\" maxlength=\"16\" size=\"25\" value=\"".$regName."\"></>";
echo "GIRO: ";
echo "<input name=\"giroNuevo\" type=\"text\" style=\"background-color:#CFCFCF\" maxlength=\"16\" size=\"15\" value=\"".$regGiro."\" readonly=\"readonly\"></>";

echo "<select name=\"giroEdit\"><option value=\"\">CAMBIAR A:</option>";
    while($row = mysql_fetch_assoc($resultGiroEdit)){
        echo "<option value=\"".$row['idGiro']."\">".$row['nombre']."</option><br/>";
    }
echo "</select>";

echo "COMUNA: ";
echo "<input name=\"comunaNuevo\" type=\"text\" style=\"background-color:#CFCFCF\" maxlength=\"20\" size=\"15\" value=\"".$regComuna."\" readonly=\"readonly\"></>";

echo "<select name=\"comunaEdit\"><option value=\"\">CABIAR A:</option>";   
    while($row = mysql_fetch_assoc($resultComunaEdit)){
        echo "<option value=\"".$row['idComuna']."\">".$row['nombre']."</option><br/>";
    }
echo "</select>";

echo "<input type=\"submit\" name=\"submitEditar\" value=\"Guardar Cambio\" onClick=\"return confirm('seguro que desea guardar cambios?');\"> </>";
echo "<input type=\"hidden\" value=\"".$regEdit."\" name=\"idEdit\" id=\"idEdit\"/>";
echo "</div></form>";





?>

第一次通话工作完全得到了该地区的客户,但是当我点击编辑按钮时出现问题。希望你能帮助我,并对这个长期问题感到抱歉。

万一你想知道,当我提交第二个表格来编辑将使用post方法而不是ajax的客户信息时。

1 个答案:

答案 0 :(得分:0)

问题是我使用的是输入类型的图像,所以当点击时,刷新网站,没有onclick功能没有加载,所以我只是改变输入类型图像的按钮然后它工作=)