从动态下拉菜单中显示同一页面上的最终结果

时间:2014-04-14 20:18:54

标签: javascript php jquery

我有一个来自国家/州/城市/目的地的多个下拉列表。

我希望此插件接下来要做的是,一旦选择了目标菜单,页面将自动在同一页面上显示有关该目标的一些常规信息,而无需重新加载。

常规信息与我的目标下拉菜单位于同一个表中,但在不同的列下。

那么,只有在选择了最终的扩展菜单时,我才能将这些信息显示在文本框或类似的东西中。

到目前为止,我的代码的一些部分,我不相信发布所有内容是必要的,可能会有点混乱。 PS-我是初学者。

这是我的javascript示例,它从我的ajax.php文件中调用数组来填充下拉菜单......

jQuery(".wrap").on('change', '#city', function() {
            var querystr2 = 'cityid=' +jQuery('#city :selected').val();
            jQuery.post("<?php echo plugins_url(); ?>/Destination_Drop_Down_Menu/ajax.php", querystr2, function(data) {
                if(data.errorcode ==0){
                    jQuery('#descbo').html(data.chtml)
                }else{
                    jQuery('#descbo').html(data.chtml)
                }
            }, "json");
        });

这是我的ajax.php文件的一部分,前面的jQuery示例正在从中提取信息。

$city_id = isset($_POST['cityid']) ? $_POST['cityid'] : 0;
if ($city_id <> 0) {
$errorcodeD = 0;
$strmsg = "";
$sqlD="SELECT * from destination WHERE IDCity = ". $city_id . " ORDER BY name;";
$resultD=mysql_query($sqlD);
$contD=mysql_num_rows($resultD);
if(mysql_num_rows($resultD)){
    $chtmlD = '<select name="destination" id="destination"><option value="0">--Select   Destination--</option>';
    while($row = mysql_fetch_array($resultD)){
        $chtmlD .= '<option   value="'.$row['IDDestination'].'">'.$row['name'].'</option>';
    }
    $chtmlD .= '</select>';
    echo json_encode(array("errorcode"=>$errorcodeD,"chtml"=>$chtmlD));
}else{
    $errorcodeD = 1;
    $strmsg = '<font style="color:#F00;">No Destination available</font>';
    echo json_encode(array("errorcode"=>$errorcodeD,"chtml"=>$strmsg));
}

我的html部分会显示所有内容。

<h2>Destination</h2>
        <div class="wrap" id="descbo">
        </div>

因此,基本上用户选择的目的地,该目的地的特定信息将在屏幕上以单独的框或文本区域呈现自己。

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,您希望您的php脚本在选择特定目标时从destination表返回数据。您说您不希望页面重新加载,但我假设您可以向服务器发出另一个AJAX请求。如果是这种情况,您只需为destination <select>创建另一个委派的jQuery处理程序:

jQuery(".wrap").on('change', '#destination', function() {
    var data = {destinationid: this.value};
    jQuery.post("url/to/script.php", data)
        .done(function(response) {
            jQuery('#descbo').html(response.html);
        });

然后,在你的PHP中,你可以有这样的东西:

$destination_id = isset($_POST['destinationid']) ? $_POST['destinationid'] : 0;
...
$sqlD="SELECT * from destination WHERE ID = ". $destination_id . " ORDER BY name;";
$resultD=mysql_query($sqlD);
if(mysql_num_rows($resultD)){
    $chtmlD = '<div class="destination">';
    while($row = mysql_fetch_array($resultD)){
        $chtmlD .= '<p>' . $row['whatever'] . '</p>';
    }
    $chtmlD .= '</div>';
    echo json_encode(array("errorcode"=>$errorcodeD,"chtml"=>$chtmlD));
} else {
...
}

这将用包含目标描述的div(或任何内容)替换原始目标<select>。如果您不想替换选择,您可以简单地让JS在页面上更新不同的元素,例如

jQuery('#some_other_element').html(response.html);