2017-02-23 111 views
2

我有两个下拉菜单,国家状态为用户注册页面。这里国家是基于国家的。第二下拉菜单未选中

如果我选择国家,然后根据该国的国家将进行筛选。

我的问题是在编辑用户

我有以下的jQuery代码:

var u_id = <?= intval($_GET['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'); 

这里就是我想要做的是,一旦国家被选中,那么它会通过使用功能

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 "<select class='select-style' name='country' id=\"country\" onChange=\"dochange('state', this.value)\">"; 
    echo "<option value=''>- Select Country -</option>\n"; 
    $result=mysql_query("select * from countries order by countryName asc"); 
    while($row = mysql_fetch_array($result)){ 
     echo "<option value='$row[countryCode]'> $row[countryName]</option>" ; 
    } 
} 
else if ($data=='state') { 
    echo "<select class='select-style' name='state' id=\"stateId\" >\n"; 
    echo "<option value=''>- Select State -</option>\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 "<option ".$selected. " value=\"$row[state]\">$row[stateName]</option> " ; 
    } 
} 
echo "</select>\n"; 

是越来越过滤,但我不能够显示用户的状态。

任何人都可以请帮我解决这个问题。

谢谢。

+0

尝试类似$( “#state”)VAL(data.result.state)。没有attr('selected',true); –

+0

@FerminPerdomo是的我也试过这个,我的猜测是在dochange函数$(“#state”).val(data.result.state);这一个没有发生 – nas

+0

因为在我输入$(“#stateId”).val(“01”);在控制台它是菜单正在改变。 – nas

回答

1

你需要做的功能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); 
} 

那么一些变化,你可以使用这个

var u_id = <?= intval($_GET['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'); 

你也可以使用这样

var u_id = <?= intval($_GET['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'); 
+0

谢谢你的努力。你的代码并没有完全解决我的问题。但是代码确实给了我一些提示。 :) 谢谢。 – nas

+1

不客气,谢谢你让我知道我至少帮你一点点 –

0

我用下面的代码让我的解决方案:

var u_id = <?= intval($_GET['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'); 

这是正确的方法,以及如何通过data.result.state到window.on(“负荷”)函数。

相关问题