【问题标题】:Set a drop down value based on another drop down value in php根据php中的另一个下拉值设置下拉值
【发布时间】:2017-05-16 07:57:32
【问题描述】:

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

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

我的第一个下拉菜单,

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

但没有获得第二个下拉菜单的下拉值。

【问题讨论】:

  • 如果您想修改第二个下拉列表用户在第一个下拉列表中选择了一个选项之后,您必须发送一个 AJAX 请求。
  • 你不能直接使用 php 来做到这一点,你需要 1) 使用完整的 javascript 来处理这个,或者 2) 提交一个新的 http 请求来使 php 生效或者 3) 使用 ajax跨度>
  • 如何使用 javascript 处理这个问题? @hassan
  • 在您的 change 回调中,按照您的逻辑选择或填充其他选择下拉菜单
  • @Mann 阅读了这篇关于传递变量coderslexicon.com/… 的文章@stackoverflow.com/questions/1917576/… 上还有一个 SO 问题

标签: javascript php jquery arrays


【解决方案1】:

你必须编写一个网络服务。创建一个在第一个下拉菜单发生变化时调用的新页面(使用 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
}

【讨论】:

  • 嗨,我在同一页面上有两个下拉列表。那么有没有办法使用 AJAX 但在同一页面上呢?请指教。
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多