Hallo ich hab ein kleines Problem mit der dynamischen Lösung des für ein kleines Chatprojekt.
die PHP Datei: chatbox_user.php
HTML
<div class="ch_body" id="ch_body_<?php echo $ch_us_to_id; ?>">
<div class="ch_us_nick" id="ch_us_to_name"><?php echo $ch_us_name; ?></div>
<div class="ch_us_min">
<a href="#" onclick="return ch_to_min('ch_body_<?php echo $ch_us_to_id; ?>');">
<div class="min">si</div>
</a>
</div>
<div class="ch_us_close">
<a href="#" onclick="return ch_to_close('ch_body_<?php echo $ch_us_to_id; ?>');">
<div class="close"></div>
</a>
</div>
<div class="ch_us_text" id="ajax_chat_<?php echo $ch_us_to_id; ?>">
Texte von User zu anderen Usern.
Texte von User zu anderen Usern.
Texte von User zu anderen Usern.
</div>
<div class="ch_send_text" id="ch_st_<?php echo $ch_us_to_id; ?>">
<input type="text" class="text" id="ch_TEXT" name="ch_TEXT">
</div>
<div class="ch_send_button" id="ch_sb_<?php echo $ch_us_to_id; ?>">
<input type="submit" class="submit" id="submit" name="submit" onclick="return ch_to_send('<?php echo $ses_us_id; ?>', '<?php echo $ch_us_to_id; ?>');" value="senden">
</div>
</div>
Alles anzeigen
mit onclick wird die Funktion "ch_to_send" aufgerufen
Ajax code dazu: ajax.js
JavaScript
// Überprüfen ob XMLHttpRequest-Klasse vorhanden und erzeugen von Objekte für IE7, Firefox, etc.
if(typeof XMLHttpRequest != 'undefined') { // Mozilla, Safari, Opera, IE 7
var request = new XMLHttpRequest();
}
// Wenn im oberen Block noch kein Objekt erzeugt, dann versuche XMLHTTP-Objekt zu erzeugen
// Notwendig für IE6 oder IE5
if( ! request) {
try {
var request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
}
catch(e) {
try {
var request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
}
catch(e) {
var request = null;
}
}
}
// Nachricht an user senden
function ch_to_send(ses_us, us_to_id) {
var ses_us_id = ses_us;
var ch_us_to_id = us_to_id;
if(document.getElementById) {
var ch_us_text = document.getElementById('ch_TEXT').value;
}
// Request öffnen
request.open('POST', 'ch_aktionen.php', false);
// Requestheader senden
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// Request auswerten und schreiben
request.onreadystatechange = function() {
// 0: Der Request wurde noch nicht eingeleitet
// 1: Der Request wurde gesetzt aber noch nicht gesendet
// 2: Der Request wurde gesendet und wird gerade bearbeitet
// 3: Der Request wird noch bearbeitet, Teildaten stehen aber zur Bearbeitung bereit
// 4: Der Request (=Response) ist abgeschlossen, alle Daten sind verfügbar
if (request.readyState == 4) {
if (request.status == 200) {
var content = request.responseText;
// den Inhalt des Requests in das <div> schreiben
document.getElementById('ch_box_alle').innerHTML = content;
ch_to_open(ses_us_id, ch_us_to_id);
}
else {
alert('Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:'+request.status);
}
}
}
// Request senden
request.send('ses_us_id='+ses_us_id+'&ch_us_to_id='+ch_us_to_id+'&ch_TEXT='+ch_us_text);
return false;
}
Alles anzeigen
Mit "ch_to_open" wird das vorige Fenster (eingeladenes divelement von chatbox_user.php) wieder geöffnet. Funktioniert im Firefox wunderbar, jedoch nicht im IE und für mich ist dieser reload von chatbox_user.php noch nicht wirklich schön.
Gibt es da eine dynamischere Lösung wenn ja währ ich euch für Hilfe dankbar.
Bis jetzt könnt ihr es selber testen unter Chatportal .