Ich gebe ein Formular für jede Zeile in einer Tabelle über Ajax. Ich habe es getan, so dass ich Datensätze spezifisch für eine Studenten-ID auf jeder Zeile einfügen kann. Dies ist, wie die Form aussieht, wenn es Rückkehr von Ajax ist: Formular Rückgabe von Ajax nicht senden richtige ID
Problem ist, wenn das Formular zurückgegeben wird, und ich versuchte, eine Punktzahl für die erste Schüler Ralph T. Hensley ich die richtige id
bekommen einfügen von diesem Studenten. Aber als ich versuchte, eine Punktzahl für die übrigen Schüler einfügen bekomme ich die id
für Ralph T. Hensley die 7
ist
ich richtig die eindeutigen IDs der einzelnen Schüler bin angezeigt wird, aber es scheint, wie, wann immer ich auf die Schaltfläche Speichern gibt nur die ID des ersten Schülers in der Ergebnismenge zurück. Die Struktur meines Codes ist unten.
So gebe ich mein Formular über Ajax zurück.
$output .= '<tbody>';
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_array($result)) {
# code...
// unseen fields values that will be send
$output .= '<form action="#" method="post" class="st_score_form">';
$output .= '<tr>';
$output .= '<td>
<input type="number" class="student_set" name="student_id" value="'.$row['student_id'].'">
</td>';
$output .= '<td style="display:none;">
<input type="text" class="subject_set" name="subject" value="'.$subject_id.'">
</td>';
$output .= '<td style="display:none;">
<input type="number" class="class_set" name="class_id" value="'.$class_id.'"></td>';
$output .= '<td style="display:none;"><input type="text" name="term" value="'.$term.'"></td>';
$output .= '<td>'.$row["first_name"]." ".substr($row["middle_name"], 0, 1).". ".$row["surname"].'</td>';
$output .= '<td><input type="number" class="score_set" min="59" max="100" name="score" class="form-control" required="required"></td>';
$output .= '<td><input type="submit" name="savebtn" value="Save" class="btn btn-info form-control savebtn"></td>';
$output .= '</tr>';
// -- end of unseen fields
$output .= '</form>';
}
$output .= '</tbody>';
Das ist mein Skript:
$(document).on('click', '.savebtn', function(event) {
event.preventDefault();
var student = $('.student_set').val();
var student_class = $('.class_set').val();
var subject = $('.subject_set').val();
var score = $('.score_set').val();
console.log("Student " +student);
console.log("Class " +student_class);
console.log("subject " +subject);
console.log("Score " +score);
if (student != null && student_class != null && subject != null && score != null) {
$.ajax({
url:"includes/ajax/create_score.php",
method:"post",
data:{"student":student, "class":student_class, "subject":subject, "score":score},
dataType:"text",
success:function(data){
$("#success").fadeIn('slow', function(){
$("#success").html('<div class="alert alert-info alert-dismissible"><button type="button" class="close" data-dismiss="alert" aria-hidden="true"><i class="glyphicon glyphicon-remove-circle"></i></button><b><i class="fa fa-check"></i>Alert! </b>'+data+'</div>');
});
}
});
} else {
$("#result").html('');
}
});
$('body').append('<button class="savebtn"></button>');
Ich bin offen Rücken und Vorschläge über Möglichkeiten zu füttern ich diese Arbeit machen kann. Vielen Dank!!!
Ids haben innerhalb eines HTML-Dokuments eindeutig sein. – CBroe
Sie können nicht ID in Schleifen verwenden Klasse statt –
Versuchen Sie, nicht mit IDs in Schleife zu arbeiten. Sie sollten wissen, dass Sie einem Element in HTML nur einmal eine ID geben müssen. Wenn Sie dann das richtige Element auswählen möchten, wählen Sie das übergeordnete Element
Antwort
Das erste, was es ist schlechte Praxis die gleichen IDs für alle Eingaben zu setzen, (id muss in der ganzen Seite eindeutig sein)
In Ihrem Code, Sie werden immer die falschen Werte hier
var student = $('.student_set').val();
:Sie sollten die ID als erhalten:
auch für das andere Feld.
unten Arbeits Schnipsel:
Quelle
2017-05-30 13:48:58
sollte ich das meiner Variablen zuweisen? –
danke @bRIMOs hat es funktioniert.Ich weiß nicht, ob Sie dafür Zeit haben, aber ich habe meiner Partitureingabe ein erforderliches Attribut hinzugefügt, aber wenn ich auf Speichern klicke, ohne einen Wert in das Partiturfeld einzugeben, wird es nicht validiert. Irgendwelche Ideen bitte? –
Haben Sie das Formular-Tag hinzugefügt? sonst wird es nicht funktionieren! siehe meine aktualisierte Antwort :) –
Der Bereich in Ihrer JS-Funktion ist der Button. Bedeutet das Schlüsselwort
this
ist das DOM-Element der geklickten Schaltfläche.Jetzt können Sie mit der Suche nach dem DOM (Startpunkt ist Ihre Schaltfläche) für das Eingabefeld mit dem
student_id
suchen.Quelle
2017-05-30 13:44:12 Chris
Verwandte Themen