No se pueden obtener los valores de los textos de entrada creados dinámicamente por ajax y php
Frecuentes
Visto 599 equipos
0
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>';
1 Respuestas
0
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