2017-02-23 7 views
2

ユーザー登録ページには、の2つのドロップダウンメニューがあります。です。ここで州は国に基づいています。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'); 

私がやろうとしていますどの国が選択されると、それは

loc.php機能

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); 
} 

を使用してその状態をフィルタしますされます

$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に(「ロード」)関数を渡すことです。

関連する問題