| 

.NET C# Java Javascript Exception

3
Hallo zusammen,

ich habe folgendes Problem:

für ein Projekt habe ich eine Seite die ich zu Anfangs aller 5 Sekunden per Ajax und Php mit Daten aus einer Datenbank füttere. Sobald ein bestimmter Wert in der Datenbank gesetzt wurde hört das automatische aktualisieren auf. Der ausgegebene Code ist in Form eines Formulars, von dem der obere Teil von dem oben erwähnten Ajax erstellt wird und der untere Teil fest im HTML-Code der Seite steht. Nun möchte ich es aber auch so machen, dass immer wenn ich in ein Feld des Formulars ausgefüllt wird, diese Eingabe automatisch in der Datenbank gespeichert wird.

An sich klappt alles von dem was ich oben geschrieben habe schon, bis auf folgendes: Im oberen per Ajax generierten Teil klappt das eintragen in die Datenbank nicht. Hier mal ein paar Codeschnipsel:

<script type="text/javascript" src="ajax/jquery.min.js"></script>
<script type="text/javascript">
var refreshId
$(document).ready(function()
{
$(".show").load("ajax/pfoertnerformular_ajax_response.php?id=<?php echo($id); ?>");
refreshId = setInterval(function()
{
$(".show").load("ajax/pfoertnerformular_ajax_response.php?id=<?php echo($id); ?>");
}, 5000);
});
$(document).ready(function()
{
$(".ajaxinput").change(function()
{
var myid = document.getElementById("myid").value;
var para = $(this).attr('id');
var valu = document.getElementById(para).value;
var data = 'myid=' + myid + '&para=' + para + '&valu=' + valu;
$.ajax(
{
type: "POST",
url: "ajax/ajax_insert.php",
data: data,
cache: false
});
});
});
</script>


Mit dem oberen Teil wird der obere Teil des Formulars alle 5 Sekunden erneuert, der untere Teil ist für das Eintragen in die Datenbank zuständig.

Der davon aufgerufene Code wird einfach in ein Div gepackt:

<div class="show">
<!-- Div-Container für Ajax -->
</div>


Sobald in der Datenbank ein Wert gesetzt ist, wird in dem per Ajax aufgerufenen Teil folgendes ausgelöst:

<?php
if($rdy)
{
?>
<script type="text/javascript">
clearInterval(refreshId);
</script>
<?php
}
?>


Damit wird das automatische aktualisieren gestoppt.

Die Input-Felder sehen allgemein so aus:

<input type="text" id="telefon" class="ajaxinput" />


Wenn ich das ganze mit der "Element untersuchen"-Funktion von Chrome überwache sehe ich auch das das php-Script zum Schreiben in die Datenbank von den unteren Feldern aufgerufen wird, von den oberen jedoch nicht.

Um das Problem jetzt noch mal genauer zu bennen: wenn ich in den Input-Feldern die per Ajax auf der Seite erzeugt werden etwas schreibe wird das Script oben nicht aufgerufen, bei den Feldern die fest in meiner php-Datei stehen funktioniert das ganze jedoch. Habe ich irgendwo einen Fehler gemacht oder liegt das an einer Eigenschaft von Javascript? Ist es vielleicht irgendwie möglich die Input Felder über die InnerHTML-Eigenschaft des Show-Div anzusprechen?

Ich bin für jede Hilfe dankbar.

MfG. Amphi
19.01.2015
amphi 13 4
4 Antworten
2
Ändere die Zeile
$(".ajaxinput").change(function()

in
$(document).delegate(".ajaxinput", "change", function()

dann müsste es klappen.

Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements.
19.01.2015
phg 1,6k 3
0
Ich konnte Deinen Code jetzt nur überfliegen, aber Du setzt mit dem $(document).ready die Funktion für den "Change". Nur ist zu dem Zeitpunkt vermutlich Dein Ajax Inhalt ja noch gar nicht da, oder? Du müsstest die Change Funktion zuweisen, nachdem der Code geladen wurde?
19.01.2015
Xantiva 2,3k 2 9
0
Hallo,

danke für die Antwort, der Code wird über den Befehl

$(".show").load("ajax/pfoertnerformular_ajax_response.php?id=<?php echo($id); ?>");


geladen. Solange das automatische Aktualisieren läuft sind die oberen Input-Felder nur Labels, also keine Input-Felder, hätte ich oben wohl erwähnen sollen. D. h. das ich in diese Input-Felder auch erst etwas schreiben kann sobald die SetInterval()-Funktion gestoppt wurde, aller spätestens damit sollte doch der Ajax-Code definitiv da sein oder? Oder habe ich etwas an der Funktionsweise von Javascript falsch verstanden?

MfG. Amphi
19.01.2015
amphi 13 4
0
Funktioniert perfekt! Ich danke vielmals! :)

MfG. Amphi
20.01.2015
amphi 13 4

Stelle deine Javascript-Frage jetzt!