segundo menú desplegable no seleccionado

Tengo dos menú desplegable, país y estado para la página de registro de usuario. Aquí el Estado se basa en el país.

Si selecciono el país, se filtrará el estado basado en ese país.

Mi problema es al editar un usuario .

Tengo el siguiente código jquery:

var u_id = ; $.post('model/getUser.php',{id:u_id},function(data){ if(data.success == true){ $("#country").val(data.result.country); dochange('state', data.result.country); $("#state").val("+data.result.state+").attr('selected',true); } },'json'); 

Aquí lo que bash hacer es que una vez que se seleccione el país, se filtre su estado utilizando la función

 function dochange(src, val) { var req = Inint_AJAX(); req.open("GET", "loc.php?data="+src+"&val="+val); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); req.send(null); } 

loc.php

 $data = $_GET['data']; $val = $_GET['val']; $val2 = $_GET['val2']; if ($data=='country') { echo ""; echo "- Select Country -\n"; $result=mysql_query("select * from countries order by countryName asc"); while($row = mysql_fetch_array($result)){ echo " $row[countryName]" ; } } else if ($data=='state') { echo "\n"; echo "- Select State -\n"; $result=mysql_query("SELECT * FROM state WHERE countryCode= '$val' order by stateName asc"); while($row = mysql_fetch_array($result)){ $selected = ""; if ($val2 == $row[state]) $selected = " selected "; echo "$row[stateName] " ; } } echo "\n"; 

Se está filtrando pero no puedo mostrar el estado del usuario.

¿Alguien puede ayudarme a solucionar este problema?

Gracias.

Debes hacer algunos cambios en la función dochange

 function dochange(src, val,cb) { var req = Inint_AJAX(); req.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if(cb) cb(this.responseText); } }; req.open("GET", "loc.php?data="+src+"&val="+val); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); req.send(null); } 

Entonces puedes usar esto

 var u_id = ; $.post('model/getUser.php',{id:u_id},function(data){ if(data.success == true){ $("#country").val(data.result.country); dochange('state', data.result.country,function(data){ $("#state").html(data); }); } },'json'); 

también puedes usar esto

 var u_id = ; $.post('model/getUser.php',{id:u_id},function(data){ if(data.success == true){ $("#country").val(data.result.country); dochange('state', data.result.country,function(data){ $("#state").html(data); $("#state").val('01'); }); } },'json'); 

Obtengo mi solución usando el siguiente código:

 var u_id = ; $.post('model/getUser.php',{id:u_id},function(data){ if(data.success == true){ if($("#country").val(data.result.country)){ dochange('state', data.result.country); $(window).on('load', function () { $("#state").val('01'); }); } } },'json'); 

¿Es esta la forma correcta y cómo pasar data.result.state a la función window.on (‘load’).