Writing Nested ajax requests

I had not come to this need before. But yes I came to a situation where it felt like there was a need of using the values returned by an AJAX request and do another AJAX request and return the values. Actually this thing came my way while I was writing a modules of YellowPages. There I had this issue. When I select a country in a dropdown, then zones will be populated in another dropdown and the selected dropdown in zones will make another dropdown to pull the districts of the default selected zone. For this I had to use nested AJAX requests. May be this might not be the best way to do this. But yet, it works for me and you might give a try if you are thinking of something similary
| $(document).ready(function(e) { | |
| $('#country_id').change(function(){ | |
| var id = $(this).val(); | |
| $.ajax({ | |
| type:"POST", | |
| url: getLocation(), | |
| data: 'action=getZones&id='+id, | |
| success: function(msg){ | |
| var zones=JSON.parse(msg); | |
| var zone_content="" | |
| for(var i=0;i<zones.length;i++){ | |
| zone_content+="<option value=\""+zones[i].zone_id+"\">"+zones[i].zone_name+"</option>" | |
| } | |
| document.getElementById('zone_id').innerHTML = zone_content; | |
| $.ajax({ | |
| type:"POST", | |
| url:getLocation(), | |
| data:'action=getDistricts&id='+zones[0].zone_id, | |
| success:function(msg1){ | |
| document.getElementById('district').innerHTML=msg1; | |
| } | |
| }); | |
| }, | |
| error: function(){} }); }); }); |
The response are json responses. The first response gives zones details which has zone_id, zone_name. And the first zone is taken as the default selected zone to populate the districts.
Comments
Post a Comment