No se pueden obtener los valores de los textos de entrada creados dinámicamente por ajax y php

Estoy tratando de publicar los valores que obtengo de un formulario con una función Ajax. En primer lugar, uso otra función Ajax para enumerar los datos como una tabla de una base de datos. Después de eso, para editar los datos seleccionados, estoy tratando de usar una función Ajax que no funciona. Aquí están mis funciones; el último no publica ningún dato. Puedo agregar cualquier información necesaria si lo necesita.

AJAX:

        <script>
        $(document).ready(function(){
            var clickCheck = 1;
            $('select').change(function(){
                clickCheck = 1;
                $.ajax({
                    type: 'POST',
                    url: 'ajaxTest4.php',
                    data: $('#classForm').serialize(),
                    dataType: "html",
                    beforeSend: function(){
                        $('#result').html('<img src="loading.gif"/>');
                    },
                    success:function(answer){
                        $('#result').html(answer);// birden fazla data nasıl çekilecek
                        console.log("Sended1");
                    },
                    error:function(){
                        alert("An error has occured !");
                    }         
                });
            });
            $('#result').on("click", "a", function(){
                var order = this.id;
                $.ajax({
                    type: 'POST',
                    url: 'ajaxTest4.php',
                    data:{id:order},
                    dataType: "html",
                    beforeSend: function(){
                        $('#result').html('<img src="loading.gif"/>');
                    },
                    success:function(answer){
                        $('#result').html(answer);// birden fazla data nasıl çekilecek
                        console.log("Sended2");
                    },
                    error:function(){
                        alert("An error has occured !");
                    }         
                });
            });
            $('#result').on("click", ".delete", function(){
                var order = this.id;
                $.ajax({
                    type: 'POST',
                    url: 'delete.php',
                    data:{id:order},
                    dataType: "html",
                    beforeSend: function(){
                        $('#result').html('<img src="loading.gif"/>');
                    },
                    success:function(answer){
                        $('#result').html(answer);// birden fazla data nasıl çekilecek
                        console.log("Sended3");
                    },
                    error:function(){
                        alert("An error has occured !");
                    }         
                });
            });
            $('#result').on("dblclick", ".doubleClick", function(){
                $('.hiddenInput').fadeIn();
            });
            //var grade1 = $('#grade11').val();
            //var grade2 = $('#grade22').val();
            $('#result').on("click", ".edit", function(){
                //var order = this.id;
                //alert(grade1+" "+grade2);
                $.ajax({
                    type: 'POST',
                    url: 'edit.php',
                    data:$('#tableForm').serialize(),
                    dataType: "html",
                    beforeSend: function(){
                        $('#result').html('<img src="loading.gif"/>');
                    },
                    success:function(answer){
                        $('#result').html(answer);// birden fazla data nasıl çekilecek
                        console.log("Sended4");
                    },
                    error:function(){
                        alert("An error has occured !");
                        console.log("errorEdit.php");
                    }         
                });
            });
        });
    </script>

HTML:

<body>
    <h3>Get Student</h3>
    <form id="classForm">
        <div id="classSelectionLabelDiv">
            <label for="classSelection">Select Class</label>
        </div>
        <div id="classSelectionDiv">
            <select id="classSelection" name="class">
                <option value="" selected="selected">--Select--</option>
                <option value="1A">1A</option>
                <option value="1B">1B</option>
                <option value="1C">1C</option>
            </select>
        </div>
    </form>
    </br>
    <div id="result">

    </div>
</body>

ajaxTest4.php:

include './config.php';

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest'){
    die('Wrong request !');
}
$sql='';
if(isset($_POST['id'])){
    $sql = "WHERE ID = '".$db -> real_escape_string($_POST['id'])."'";
}else{
    $sql = "WHERE Class = ?";
}
$stmt = $db->prepare("SELECT * FROM test1 $sql");
if($stmt == "false"){
    die('Query error !'.$db->error);  
}
if(isset($_POST['id'])){
    $stmt -> execute();
    $result = $stmt -> get_result();
    $student = $result -> fetch_array(MYSQLI_BOTH);
    echo "<form id='tableForm' method='POST'>";
    echo "<table>";
    echo"<tr><td align='center'>".$student['StudentID']."</td>";
    echo"<td align='center'>".$student['FirstName']."</td>";
    echo"<td align='center'>".$student['LastName']."</td>";
    echo"<td align='center'>".$student['Class']."</td>";
    echo"<td align='center' class='doubleClick' id='grade1'>".$student['Grade1'].'<input type="text" class="hiddenInput" id="grade11" name="grade11" size="2" hidden/>'."</td>";
    echo"<td align='center' class='doubleClick' id='grade2'>".$student['Grade2'].'<input type="text" class="hiddenInput" id="grade22" name="grade22" size="2" hidden/>'."</td>";
    echo"<td align='center'><a class='edit' id='".$student['ID']."'>Edit</a></td>";
    echo"<td align='center'><a class='delete' id='".$student['ID']."'>Delete</a></td>";
    echo "</table>";
    echo "</form>";
}
else{
    $stmt -> bind_param("s",$_POST['class']);
    $stmt -> execute();
    $result = $stmt -> get_result();
    echo 'There is/are '.$result->num_rows." ".'record(s)';
    echo '
    <table> 
    <tr >
        <td align="center">Student ID</td>
        <td align="center">First Name</td>
        <td align="center">Last Name</td>
        <td align="center">Class</td>
        <td align="center">Grade 1</td>
        <td align="center">Grade 2</td>
        <td align="center">Details</td>
    </tr>';
    while($student = $result ->fetch_array(MYSQLI_BOTH)){
        echo"<tr><td align='center'>".$student['StudentID']."</td>";
        echo"<td align='center'>".$student['FirstName']."</td>";
        echo"<td align='center'>".$student['LastName']."</td>";
        echo"<td align='center'>".$student['Class']."</td>";
        echo"<td align='center'>".$student['Grade1']."</td>";
        echo"<td align='center'>".$student['Grade2']."</td>";
        echo"<td align='center'><a id='".$student['ID']."'>Click</a></td>";
    }
    echo '</table>';
}
$db->close();?>

editar.php:

if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest'){
    die('Wrong request !');
}
$updatedGrade1 = $_POST['grade11'];
$updatedGrade2 = $_POST['grade22'];

echo 'Grade1:'.$updatedGrade1.'</br>';
echo 'Grade2:'.$updatedGrade2.'</br>';

preguntado el 08 de febrero de 14 a las 12:02

1 Respuestas

Por lo que puedo ver, el último Ajax intenta serializar el #tableForm Forma. Dentro de eso, hay dos campos de entrada, proporcionados por su php:

    echo"<td align='center' class='doubleClick' id='grade1'>".$student['Grade1'].'<input type="text" class="hiddenInput" id="grade11" name="grade11" size="2" hidden/>'."</td>";
    echo"<td align='center' class='doubleClick' id='grade2'>".$student['Grade2'].'<input type="text" class="hiddenInput" id="grade22" name="grade22" size="2" hidden/>'."</td>";

No existe tal parámetro "oculto", por cierto. Debería ser <input type="hidden" ... pero eso es solo aparte.

Estos dos campos no tienen ningún valor. Entonces: ¿qué esperas que te serialicen? El formulario y sus campos no tienen datos válidos, por lo que al menos esto da como resultado una cadena de objeto vacía: "{}"

Respondido 08 Feb 14, 12:02

Estoy tratando de obtener los valores de los cuadros de entrada que escribirá un usuario. - Tartar

Ya los has visto. Los cuadros de entrada que utilizó en su respuesta. - Tartar

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.