6

I am using ajax call for to bring the list for my drop down and assign it to html,works fine for mozilla nad crome but for IE it displays a blank dropdown

var xmlhttp;

var strURL = "selectedu.php?selectward="+selectward;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        if(xmlhttp.responseText=="NOER")
        {
            alert("Select ER Type");
        }
        else
        {
            document.getElementById(id).innerHTML=xmlhttp.responseText;
        }   
    }
}
xmlhttp.open("GET",strURL,true);
xmlhttp.send();
3
  • Can you post some more code for this? If possible try jsfiddle.net Commented Jan 25, 2012 at 9:01
  • can you detail: which tagName is your element and, how you create and make your XHR call ? Commented Jan 25, 2012 at 9:01
  • 2
    ...and here we see the StackOverflowers in their natural habitat. Hungry for code they quickly swarm the new questions and poke and prod until the questioner has excreted every last iota of script. Commented Jan 25, 2012 at 9:03

3 Answers 3

8

The innerHTML property has some problems in IE when trying to add or update form elements, the workaround is to create a div and set the innerHtml property on that before appending to the DOM:

var newdiv = document.createElement("div");
newdiv.innerHTML = xmlhttp.responseText;
var container = document.getElementById(id);
container.appendChild(newdiv);
Sign up to request clarification or add additional context in comments.

Comments

4

If the document is XHTML the IE will not allow the innerHTML property to be set directly. You would need to parse the responseText into DOM elements and replace the contents of the existing element with those elements.

Comments

1

If you're using jQuery you can use append() like this:

$get('yourTargetObjectId').append('<p>this test to add</p>');

append() inserts content at the end of the selected element and use prepend() to insert at the beginning of the selected element.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.