Heyho Leute,
wußte nicht genau, welches Themengebiet das richtige ist - aber dieses Problem hat nur der FireFox.
Mein PHP Script sendet per echo (headers modified: text/xml) ein XML file an das JS-File zurück.
Per responseXML bekommt mein Browser sie. Ich habe die Daten, welche der Browser per POST bekommt gecheckt - alle sind da.
Will ich sie nun aber ausgeben stoppt er bei ca. 3900 Zeichen. Das seltsame ist, dass er dennoch die Tags noch schließt. Sprich, wenn ich mir den Quellcode anschaue steht da:
<div class="das_ist_ein_t"></div>
anstatt
<div class="das_ist_ein_test"></div>
Natürlich müßten danach noch weitere DIVs und so kommen, die er aber gar nicht mehr ausgibt.
Folgend sieht mein Script aus:
function getSearchResult(search,uid){
document.getElementById('loading').style.display='block';
search = document.getElementById(search+'_search_input').value;
var query = 'UID='+uid+
'&action=getSearchResult'+
'&search='+encodeURIComponent(search);
var xmlhttp = new ajaxRequest(
'../ajax-handler.php',
function()
{
var http = xmlhttp.req;
if (http.readyState==4)
{
document.getElementById('loading').style.display='block';
if(http.status == 200) {
document.getElementById('loading').style.display='none';
var daten = http.responseXML;
display_xml(daten);
}
else
{
}
}
},
"POST",
query,
["Content-Type","application/x-www-form-urlencoded"]
);
xmlhttp.doRequest();
}
display_xml schaut dann folgendermaßen aus:
/**
* fills the xml to screen
*/
function display_xml(xml){
var content = xml.getElementsByTagName('content')[0].childNodes;
for(var i=0; i < content.length; i++){
document.getElementById(content[i].tagName).innerHTML = decodeURIComponent(content[i].firstChild.nodeValue).replace(/+/g,' ');
}
}
Und das XML file so:
$xml_file = '<?xml version="1.0" encoding="UTF-8"?>';
$xml_file.= '<content>';
$xml_file.= '<body>'.htmlentities($content).'</body>';
$xml_file.= '<box2>Das is die Suche!!!</box2>';
$xml_file.= '</content>';
header('Content-type: text/xml');
echo $xml_file;
Wobei der Fehler irgendwo in der Zeile:
document.getElementById(content[i].tagName).innerHTML = decodeURIComponent(content[i].firstChild.nodeValue).replace(/+/g,' ');
liegen muss. Da nicht alle Daten vom XML-Tag <body> in das div mit der id body geladen werden. Aber das was im XML-Tag <box2> steht wird wiederrum in das DIV mit der ID box2 geladen.
Also gibts wohl eine max length von innerHTML = <content> ...
Kennt wer das Problem?