首页 > 解决方案 > Ajax POST 以获取选择项

问题描述

我在选择中有一些地方的名称。其中一些名称带有撇号。当用户通过该选择做出选择时,Ajax 对表进行查询以查找与该位置匹配的商店的出现情况。我的代码是这样的:

<?php

echo "<select id='location' name='location'>";
echo "<option value='' selected>Select a location</option>";

$sql = "SELECT * FROM locations_list ORDER BY location_name;"; 
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        echo "<option value='" . $row['location_name'] . "'>". $row['location_name'] . "</option>";
    }
}

echo "</select>";

echo "<select id='shop' name='shop'>";
echo "<option value='' selected='shop'>Select location first</option>";

?>

<script>

$(document).ready(function(){
    $('#location').on('change',function(){
        var locationID = $(this).val();
        if(locationID){
            $.ajax({
                type:   'POST',
                url:    'extract_shops.php',
                data:   {'location': locationID},
                success:function(html){
                    $("#shop").html(html);
                }
            });
        }else{
            $('#shop').html('<option value="">Select a location first!</option>');
        }
    });
});

</script>

<?php

echo "</select>";

当地点的名称中没有撇号时,事情就会顺利进行。在这种情况下,Ajax 将位置名称传递给 extract_shops.php(它有一个简单的"SELECT * FROM shops WHERE location = '$passedlocationname';")并返回一个商店列表。

但是当 location 有一个撇号的名称时,Ajax 不会将任何内容传递给 extract_shops.php。我在 extract_shops.php 中放置了一个 if,它在第二个选择中返回此信息,以防 Ajax 没有传递任何内容。

我哪里错了?

标签: phpmysqlajaxpost

解决方案


推荐阅读