Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsGeneralPHPASPPerlColdFusionFlashHTML, CSS, ScriptsBrowsers

Webmaster Forum / HTML, CSS, Scripts / JavaScript / May 2007



Tip: Looking for answers? Try searching our database.

Ajax & IE

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
UKuser - 30 May 2007 16:18 GMT
Hi,

I'm working on the following code, which works fine in Firefox, but
not in IE. The problem is its not posting the variable to my page and
I'm thinking its something wrong with the getElementByID but the code
is as per an example on a tutorial website (http://www.tizag.com/
ajaxTutorial/ajax-javascript.php).

The Select element is as follows:
<select style="width:240px;font-size:8pt" id='servicet'
onchange='ajaxFunction()' name="servicet" >

So not quite sure what I've done wrong here??

Any thoughts would be great.

Thanks

A

             function ajaxFunction(){
                 var ajaxRequest;  // The variable that makes Ajax
possible!

                 try{
                     ajaxRequest = new XMLHttpRequest();
                 } catch (e){
                     try{
                         ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                     } catch (e) {
                         try{
                             ajaxRequest = new
ActiveXObject("Microsoft.XMLHTTP");
                         } catch (e){
                             alert("Your browser broke!");
                             return false;
                         }
                     }
                 }
                 ajaxRequest.onreadystatechange = function(){
                     if(ajaxRequest.readyState == 4){
                         var ajaxDisplay = document.getElementById('output');
                         ajaxDisplay.innerHTML = ajaxRequest.responseText;
                     }
                 }
                 var srv = document.getElementById('servicet').value;
                 var queryString = "?serv=" + srv;
                 ajaxRequest.open("GET", "ajax.php" + queryString,
true);
                 ajaxRequest.send(null);
             }
purcaholic - 30 May 2007 18:29 GMT
> Hi,
>
[quoted text clipped - 47 lines]
>                 ajaxRequest.send(null);
>               }

Hi UKuser,

due to an option bug in IE, it isn't possible to fill options of an
selectbox using innerHTML of an select element. Either generate the
whole selectbox on each ajaxrequest or use createElement function and
append the option elements to the selectbox.

For the fist solution you will need a container element wich should
hold the whole select box beeing send by the response.
[snip]
<script type="text/javascript">
...
var ajaxDisplay = document.getElementById('selectBoxContainer');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
...
</script>
<div id="selectBoxContainer"></div>
[/snap]

The second way needs output of the options either in xml or in json
format. i prefer usage of json, its faster to handle. the following
example uses json:
[snip]
<script type="text/javascript">

// your select box
el=document.getElementById('output');

// reset content
el.innerHTML = "";

// response should be an valid json format
var json = eval('(' + ajaxRequest.responseText + ')');

/*
lets assume the json object contains a list of
options like json[pos][0] = "value", json[pos][1] = "text"
*/
for (var i=0; i < json.length; i++) {
   var opt = document.createElement("option");
   opt.appendChild(document.createTextNode(json[i][1]));
   opt.value = json[0][1];
   el.appendChild(opt);
}
</script>
[/snap]

The last example needs some validation and error handling. Maybe
you'll won't get an json string, if an error on the server occurs.

purcaholic
UKuser - 31 May 2007 09:22 GMT
> > Hi,
>
[quoted text clipped - 99 lines]
>
> purcaholic

Hi Purcaholic,

Thank you for your detailed response. I'm not sure though if I was
unclear - I'm trying to get the value selected so I can post it to the
next page, rather than set the content of the select list. For some
reason the getelementbyID won't get the selected element from the
select box to then have it posted to the php url.

Thanks

A
purcaholic - 31 May 2007 10:02 GMT
> > > Hi,
>
[quoted text clipped - 113 lines]
>
> - Zitierten Text anzeigen -

Hi UKuser,

sorry my mistake, should read the post better before typing a answer.

You wrote, that you have problem to access to the selected value of
the select box. I suppose the options don't contain a value attribute.
If so, you won't get the content using
document.getElementById('servicet').value. Either add the value
attribute to the option list '<option value="foo">foo</foo> or use
document.getElementById('servicet').innerHTML.

purcaholic
UKuser - 31 May 2007 10:21 GMT
> > > > Hi,
>
[quoted text clipped - 126 lines]
>
> purcaholic

Hi Purcaholic,

Yeah thanks for that - I've literally just fixed it. I was using a
menu generator which didnt include the value attribute - something so
simple can be such a pain.

Thanks again.

A
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.