根据php中的另一个下拉值设置下拉值

时间:2017-05-16 07:57:33

标签: javascript php jquery arrays

我有下拉列表,当选择其中的任何选项时,应填充另一个下拉值。

我需要使用某个变量检查​​第一个下拉值,并根据该条件,根据它填充其他下拉值。

我的第一次下拉,

    <select id="mySelect" name="name">
      <option>Select any city</option>
      <?php foreach ($data as $c) { ?>
      <option><?php echo ($c[0]['value']); ?></option>
      <?php } ?>
    </select>

使用jquery获取上面的下拉选择值,但我需要 php

jQuery("#mySelect").change(function () {
        ...
    });

第二次下拉,

<select>
......
if ($myPhpVar == $data[1][$j][$i]['c_name']){  ?>
    <option><?php echo $data[1][$j][$i]['a_name']; ?></option> 
    <?php }
.... ?>
</select>

此处 $myPhpVar 应该是第一个下拉选择值,我需要将其与某些数据进行比较。

如何获取第一个下拉值并将其设置为$myPhpVar

更新:

使用jQuery管理下拉列表:

jQuery("#mySelect").change(function () {
    var end = this.value;
    var firstDropVal = jQuery('#mySelect').val();
    <?php for($j=0; $j<count($data[1]); $j++ ){ 
        //print_r ($data[1][$j]);
        for($i=0; $i<count($data[1][$j]);$i++){
            if ($myPhpVar == $data[1][$j][$i]['city_name']){  
            echo $data[1][$j][$i]['area_name']; ?>
            jQuery('#dsad').append("<option><?php echo json_encode($data[1][$j][$i]['area_name']); ?></option> ")
            <?php
            }
        }
    } ?>
    console.log(end);
    console.log(firstDropVal);
});

但是没有得到第二次下拉的下拉值。

1 个答案:

答案 0 :(得分:0)

您必须撰写网络服务。创建一个新页面,当第一个下拉列表发生更改时将调用该页面(使用AJAX)。 将选定值传递给该页面,以JSON(可能)发送响应。 将响应设置为其他组件。

jQuery("#mySelect").change(function () {
   var val = jQuery(this).val();
   jQuery.ajax({
          url: 'your_new_page.php',
          data: 'dropvalue='+val,
          processData: false,
          type: 'GET',
          dataType:'json',
          success: function(response){
             //load json data from server use it   
          },
          error: function(jqXHR, textStatus, errorThrown) {
                 //there is an error
          }
    });
});

your_new_page.php

if(isset($_GET['dropvalue'])) {
    $myPhpVar = $_GET['dropvalue'];
    //do what you want and return the response
} else {
   //value not submitted, send an error
}