我有一个来自国家/州/城市/目的地的多个下拉列表。
我希望此插件接下来要做的是,一旦选择了目标菜单,页面将自动在同一页面上显示有关该目标的一些常规信息,而无需重新加载。
常规信息与我的目标下拉菜单位于同一个表中,但在不同的列下。
那么,只有在选择了最终的扩展菜单时,我才能将这些信息显示在文本框或类似的东西中。
到目前为止,我的代码的一些部分,我不相信发布所有内容是必要的,可能会有点混乱。 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>
因此,基本上用户选择的目的地,该目的地的特定信息将在屏幕上以单独的框或文本区域呈现自己。
谢谢!
答案 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);