15. marts 2007 - 12:20Der er
27 kommentarer og 2 løsninger
Problem med .responseText i IE
Hej, jeg leger pt. med lidt ajax-småtterier, der skal opdatere en DIV, når jeg ændrer på valget i en select. Det virker perfekt i FF, men i IE kommer der en fejl: System error: -1072896658 :) Jeg har luret mig frem til, at problemet kommer, når jeg har hentet info asynkront, og den når til http.readyState == 4 og jeg så vil hente den info ud, jeg har fået via mit php-script.
Min select: ================= <select id="main_pages" name="main_pages" onchange="showPageInfo(document.getElementById(this.id).selectedIndex)">
Min PHP kode: ================= header("Content-type: text/html; charset='iso-8859-9'");
$id = intval($_GET['id']);
$sub_sql = "SELECT * FROM cms_sub_pages WHERE main_page_id = $id ORDER BY sort_id"; $sub_res = mysql_query($sub_sql); $return_tekst = ''; $return_array = array();
function showPageInfoEnd() { //alert(http.readyState); if (http.readyState == 4 || http.readyState == 0) { var result = http.responseText; var res_arr = result.split('-'); var antal_sub = res_arr[res_arr.length - 2];
var o = document.getElementById("sub_menu"); while (o.firstChild) o.removeChild(o.firstChild); // Slet evt. script-tags i div'et
var sub_menu_header = document.createElement('div'); sub_menu_header.className = 'sub_menu_header'; var header_tekst = document.createTextNode('De nuværende underpunkter til "' + res_arr[res_arr.length - 1] +'":'); sub_menu_header.appendChild(header_tekst); document.getElementById('sub_menu').appendChild(sub_menu_header);
var header_sep = document.createTextNode('--------------------------'); document.getElementById('sub_menu').appendChild(header_sep);
var sub_menu_content = document.createElement('div'); sub_menu_content.className = 'sub_menu_content';
Tja, den fil der bliver beskrevet til at indeholde fejlen i IE, index.php?action=opret_sub, har ikke en linje 72:) Javascript filen har, og det er det stykke her:
for(i=0; i<res_arr.length - 2; i++)
Mht. hvad det er for en kode, så tør jeg faktisk ikke sige det. Det er noget jeg har fundet et sted, men som jeg ikke ved præcist hva det gør, andet end funktionen getHTTPObject() skaber http objektet, men det er måske der fejlen ligger?
Det hjalp desværre ikke... prøvede at tilføje alert(xmlHttp) lige før den bliver returneret, og i IE kommer der bare '[object]' mens den i firefox kommer med '[object XMLHttpRequest]'
Det hjalp ikke erik... Har selv fundet en løsning dog, men som bare ikke forklarer hvorfor responseText ikke vil virke: responseXML og så få php-scriptet til at danne XML:)
Det giver i det mindste ikke den fejl, men nu består mit problem så blot i, at få den til at læse det XML dokument, hvilket jeg ikke helt kan få den til...
Og dette java script: var result = http.responseXML; var dom_root = result.getElementsByTagName('sider'); alert(dom_root);
Den alert her [object HTMLCollection], kan det passe? For når jeg prøver at alert(dom_root.length), siger den 1, men prøver jeg alert(dom_root.hasChildNodes()), melder den fejl:)
Ja okay, hvis man kører alert(new XMLSerializer().serializeToString(result)); på punktet forum i selecten, viser den ganske rigtigt alle elementer, men den menr stadig kun der er et elm i <sider>:S
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.