2017-02-23 113 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(「負荷」)函數。

相關問題