cusdom: Vorschau erstellen

Tach zusammen.
Ich habe eine Seite mit einer Art News-System und verwende eine Art BB-Code.
Bisher habe ich einfach die Einträge direkt in der Datenbank gespeichert. Ist zwar OK aber nicht gut.
Jetzt möchte eine Vorschau, wie z.B. bei Foren, Blogs oder in diesem Forum, benutzen.
Dies habe ich folgendermaßen realisiert:
HTML sieht so aus:
...
<div id="preview_box" style="visibility: hidden; height: 0; ">
 <div class="news_main" id="news_preview">&nbsp;
 </div>
</div>
...
<form ....>
 <input type="button" name="Preview" id="stdbutton" value="Vorschau" class="newsbutton" onClick=createNewsPreview(); />
</form>

Javascript sendet Daten per XMLHttpRequest an den Server:
createNewsPreview()
{
 Str = window.document.news_edit_form.newstext.value;
 http.open('get', 'ajaxReq_formatNewsString.php?act='+act);
 http.onreadystatechange = handleGetFormatString;
 http.send(null);
}

function handleGetFormatString()
{
 if(http.readyState == 4 && http.status == 200)
 {
  var response = http.responseText;
  if(response)
  {
   hd = document.getElementById("news_preview");
   if (!hd)
   {
    alert("error from getElementById in javascript Function changeContent (MSIE) :\n "id news_preview not found"");
   }
   document.getElementById("preview_box").style.visibility = "visible";
   document.getElementById("preview_box").style.height = "auto";
   Str = "Von User am Datum <br /> " + window.document.news_edit_form.newstitel.value + "<br />" + response;
   hd.innerHTML = Str;
  }
 }
}

Die php datei 'ajaxReq_formatNewsString.php' formatiert den text so, das z.B. Smilies und Links, korrekt angezeigt werden:
if(isset($_REQUEST['act']))
{
 ...
 $str = nl2br($str);
 ....
}

Das Problem ist das in der Preview (div id='news_preview') KEINE Zeilenumbrüche angezeigt werden. Wieso nicht?
Bei alert(response) werden die durch php generierten <br /> ´s richtig dargestellt.

Gruß, cusdom