28. januar 2009 - 10:07Der er
6 kommentarer og 1 løsning
IE7 ajax problem
Hej Eksperter,
Jeg har et problem med at hente noget xml data ind via ajax. Problemmet kommer dog kun i IE7 og 50/50 i IE8 RC1, mens det køre fint i firefox. Det data jeg henter kommer jeg i et array som jeg derefter kan bruge i en paging funktion. Men det virker som om at IE ser array'et som tomt, men hvis jeg reloader siden så virker det også i IE7 ?? Min kode ser sådan her ud:
var receiveReq = getXmlHttpRequestObject(); var pagingCount = 0; var productArray = new Array();
function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } else {
} }
function getProducts(param,page) {
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { receiveReq.open('Post', page, true); receiveReq.onreadystatechange = handleReceiveProduct; var datenow = new Date(); param += "&time" + datenow;
receiveReq.send(param); } }
function handleReceiveProduct() {
if (receiveReq.readyState == 4) {
var xmldoc = receiveReq.responseXML; var message_node = xmldoc.getElementsByTagName("message"); var n_message = message_node.length;
var HtmlReturn = "";
for (i = 0; i < n_message; i++) { var id_node = message_node[i].getElementsByTagName("id"); var name_node = message_node[i].getElementsByTagName("name"); var description_node = message_node[i].getElementsByTagName("description"); var description2_node = message_node[i].getElementsByTagName("description2"); var status_node = message_node[i].getElementsByTagName("status"); var category_node = message_node[i].getElementsByTagName("category");
productArray[i] = "<div class=\"productlist_box\"><h3><div class=\"highlight\">[</div><div class=\"header_text\">" + name_node[0].firstChild.nodeValue + "</div><div class=\"highlight\">]</div></h3>"; productArray[i] += "<div class=\"productlist_select\"><div class=\"productlist_info\"><div class=\"productlist_img\"><img src=\"ui/product_small.jpg\" /></div><!-- product img end -->"; productArray[i] += "<div class=\"productlist_text\">"+ description_node[0].firstChild.nodeValue +"</div><!-- product text end --></div><!-- productlist info end --> "; productArray[i] += "<div class=\"productlist_price\">$ 1250.00 (incl. vat $ 1500.00)</div><!-- product price end -->"; productArray[i] += "<div class=\"productlist_btn\"><a href=\"\">Add to shopping cart</a></div><!-- product list btn end --></div><!-- product select end -->"; }
productPaging(0,5) }
}
function productPaging(n,m){
pagingCount += n;
var doc = document.getElementById("productlistbox");
doc.innerHTML = "";
var c = 0;
for(var p = 0; p < m; p++){
if(c ==0){ doc.innerHTML +="<div class=\"productlist\">"; } var max = pagingCount+p;
if(max >= 0 && max < productArray.length){ doc.innerHTML += productArray[p+pagingCount];
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Når nu man vælger en forholdsvis moderne teknik som Ajax, kan det undre, man samtidig vælger at bruge innerHTML, som er et tussegammelt levn fra version 4-browserne - som er uhensigtsmæssigt - og som aldrig har været valid i nogen standard =)
Anyway, så prøv at alert'e n_message, så du kan se, hvormange childnodes, der faktisk er.
Det har jeg prøvet og FireFox retuner 11 som er der rigtige antal mens IE7 i første omgang retuner 0 men ved reload 11 ? og IE8 retuner 50% af første gangs load 0 men ellers 11 ?
jeg har droppet at gøre der via ajax, det ville også blive for usøgemaskineoptimeret når det er en pagiong funktion til produkter ! Så lukker !
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.