当前位置: 首页 > 面试题库 >

级联下拉jquery ajax php

印瑾瑜
2023-03-14
问题内容

我有以下代码以生成级联下拉列表,但是由于某种原因,ajax发布无法正常工作。我可以获取它以填充状态列表,当我选择一个状态时,我会向我显示正确的值,但是当需要发布到fetch_state.php时,它似乎发布了null。有人可以帮我解释为什么这样做吗?

这是下面的代码

<?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
include("connection.php");
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />

</head>
<body>
<div id="container">
  <div id="body">
    <div id="dropdowns">
       <div id="center" class="cascade">
          <?php
        $sql = "SELECT DISTINCT state FROM tbl_zip ORDER BY state ASC";
        $query = mysqli_query($con, $sql);
        ?>
            <label>State:
            <select name="state" id = "state">
              <option value="">Please Select</option>
              <?php while ($rs = mysqli_fetch_array($query, MYSQLI_ASSOC )) { ?>
              <option value="<?php echo $rs["state"]; ?>"><?php echo $rs["state"]; ?></option>
              <?php } ?>
            </select>
            </label>
          </div>


          <div id="city" class="cascade"></div>
          <div id="zip" class="cascade"></div>        
        </div>
    </div>
  </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("select#state").change(function(){

    var state =  $("select#state option:selected").attr('value'); 
    alert(state);   
    $("#city").html( "" );
    $("#zip").html( "" );
    if (state.length > 0 ) { 
        alert(state.length);
     $.ajax({
            type: "POST",
            url: "fetch_state.php",
            data: "state="+state,
            cache: false,
            beforeSend: function () { 
                $('#city').html('<img src="loader.gif" alt="" width="24" height="24">');
            },
            success: function(html) {    
                $("#city").html( html );
            }
        });
    } 
});
});
</script>
</body>
</html>

fetch_state.php

<?php

include("connection.php");
var_dump($_POST);
$state = trim(mysql_escape_string($_POST["state"]));

$sql = "SELECT DISTINCT city FROM tbl_zip WHERE state = ".$state ." ORDER BY city";
$count = mysqli_num_rows( mysqli_query($con, $sql) );
if ($count > 0 ) {
$query = mysqli_query($con, $sql);
?>
<label>City: 
<select name="city" id="drop2">
    <option value="">Please Select</option>
    <?php while ($rs = mysqli_fetch_array($query, MYSQLI_ASSOC)) { ?>
    <option value="<?php echo $rs["city"]; ?>"><?php echo $rs["city"]; ?></option>
    <?php } ?>
</select>
</label>
<?php 
    }

?>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("select#drop2").change(function(){

    var state_id = $("select#drop2 option:selected").attr('value');
   // alert(state_id);
    if (state_id.length > 0 ) { 
     $.ajax({
            type: "POST",
            url: "fetch_city.php",
            data: "city="+city,
            cache: false,
            beforeSend: function () { 
                $('#city').html('<img src="loader.gif" alt="" width="24" height="24">');
            },
            success: function(html) {    
                $("#city").html( html );
            }
        });
    } else {
        $("#city").html( "" );
    }
});

});
</script>

我不断收到错误

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean

问题答案:

首先,将您更改mysql_escape_stringmysqli_escape_string

$state = trim(mysqli_escape_string($con, $_POST["state"]));

然后state用引号引起来

$sql = "SELECT DISTINCT city FROM tbl_zip WHERE state = '".$state ."' ORDER BY city";

同时,把<script>块出来的fetch_state.php,只是有它在index.php与其他<script>



 类似资料:
  • 问题内容: 我试图使用AngularJS创建一个链接/级联的下拉列表(选择元素),但是我很难用我的对象属性过滤和更新“ selected”属性。 首次加载页面时,所选项目将被过滤并正确显示在下拉菜单中。更改父级下拉菜单后,子级选择项不会抓住已过滤列表中的第一个项,导致子级下拉项不会更新。 任何见解将不胜感激,请注意,我将父/子/孙子数组分开(而不是在子数组中),因为最终我将从SQL中的单独spoc

  • 本文向大家介绍下拉菜单的级联操作(ajax),包括了下拉菜单的级联操作(ajax)的使用技巧和注意事项,需要的朋友参考一下 在开发中常常会遇到菜单的级联操作,比如:国家、城市、乡镇的选择等。当选中某个国家的时候,后面的菜单会把该国家内的城市罗列出来,当选中城市的时候,后面的菜单会把对应的乡镇列出来。  解决这种菜单的级联操作的办法,我理解的有两种: ①使用js来实现,把页面所用到的级联数据放到js

  • 本文向大家介绍android实现下拉菜单三级联动,包括了android实现下拉菜单三级联动的使用技巧和注意事项,需要的朋友参考一下 android中的下拉菜单联动应用非常普遍,android中的下拉菜单用Spinner就能实现,以下列子通过简单的代码实现三级菜单联动。 一 样式文件 二 联动逻辑代码 三 结果 四 总结 三级联动主要是灵活的应用三维数组,这样能很方便的通过数组索引将三个菜单关联,同

  • 本文向大家介绍ajax三级联动下拉菜单效果,包括了ajax三级联动下拉菜单效果的使用技巧和注意事项,需要的朋友参考一下 ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可; 来找一张表: 实现: 中国地域的三级联动:省、市、区; 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过ajax发出请求传递到服务端的程序中 (2)比如取中国地域,中国是0001,那么

  • 本文向大家介绍JavaScript省市级联下拉菜单实例,包括了JavaScript省市级联下拉菜单实例的使用技巧和注意事项,需要的朋友参考一下 最近学了一个关于省市级联简单的小例子,贴出来与大家分享一下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Bootstrap每天必学之级联下拉菜单,包括了Bootstrap每天必学之级联下拉菜单的使用技巧和注意事项,需要的朋友参考一下 本文将介绍自定义的bootstrap级联下拉菜单,主要应用场合有省市级关联菜单等等,那么就先拿这个例子来讲,当然其他场景的关联菜单也同样适用。说实话,封装好一个通用的组件还是需要花费很多精力的和时间的,所谓通用,自然要考虑周全,叹!这次整理的Bootstr