2011-01-11 2 views
3

ist eine Probe der Javascript/Ajax auf Seite A:Wie kann ich Ajax verwenden, um Nachrichten über eine URL zu posten und trotzdem Zeilenumbrüche zu behalten? Hier

var commReq = getXmlHttpRequestObject(); 
function AddComment(Comment){ 
    if (commReq.readyState == 4 || commReq.readyState == 0){ 
     commReq.open("GET", '/receiveComment.php?com='+Comment+'&' + Math.random(), true); 
     commReq.onreadystatechange = handleComment; 
     commReq.send(null); 
    } 
} 

Nun ist die PHP-Seite, die den Kommentar (receiveComment.php) SEITE B empfängt:

$Comment = mysql_real_escape_string(preg_replace("/[^A-Za-z0-9_,[email protected]:'\"\/\n ]/","", $_GET['com'])); 
mysql_query("INSERT INTO Comments (Comment,Date) VALUES ('$Comment','$Date')"); 

Offensichtlich Dies sind nur Beispielschnitte, aber von 2 Seiten. Seite B wird seit dem Ajax, den ich zum Speichern des Kommentars verwende, nicht mehr gesehen. Aber ich möchte in der Lage sein, Zeilenumbrüche zu speichern, die ein Benutzer in die Textbereichsbox einfügen kann. Jede Hilfe oder Empfehlungen würde sehr geschätzt werden!

Antwort

1

Verwenden encodeURIComponent

commReq.open("GET", '/receiveComment.php?com='+encodeURIComponent(Comment)+'&' + Math.random(), true); 

Sie werden immer noch für POST kodieren müssen (Kredit agrothe)

commReq.open("POST", '/receiveComment.php?' + Math.random(), true); 
commReq.onreadystatechange = handleComment; 
commReq.setRequestHeader("Content-Type", "multipart/form-data"); 
commReq.send('com=' + encodeURIComponent(Comment)); 
+0

Super, das hat funktioniert! Vielen Dank! – SReca

0

Verwenden POST anstelle von GET. Oder URL codieren den Kommentar für die GET-Methode.

Ich denke, POST würde Ihnen besser dienen, wenn Sie Zeilenumbrüche und dergleichen erhalten möchten.

+0

Danke für Ihre Hilfe! – SReca

1

Innerhalb Ihres preg_replace() - Funktionsaufrufs suchen Sie im ersten Argument nach \ n und ersetzen es durch nichts. Dies ist wahrscheinlich die Ursache für Ihr Problem, da \ n für einen Zeilenumbruch steht, da er in doppelte Anführungszeichen eingeschlossen ist.

Ich würde versuchen, "\ n" aus Ihrer preg_replace() -Funktion zu entfernen.

Wenn es ein einfaches Anführungszeichen wäre, würde es das \ n nicht als Zeilenumbruch interpretieren, sondern würde es für seinen Nennwert nehmen.

Und FYI, die Weitergabe von Informationen über GET entfernt Zeilenumbrüche in jQuery nicht. In älteren Browsern beschränkt GET die URL jedoch auf 255 Zeichen (vor Firefox 1 und IE 6 Tage obwohl), während POST eine unbegrenzte Größe unterstützt.

Verwandte Themen