使用下拉菜单、javascript和PHP更改div的内容

使用下拉菜单、javascript和PHP更改div的内容,php,javascript,function,drop-down-menu,Php,Javascript,Function,Drop Down Menu,我是个傻瓜,但如果你帮我找到答案,我会很乐意拿一些棍子来对付它;) 我有一个$cat_数组中的类别列表。 我想建立一个选择下拉列表,这样当我选择其中一个选项时,一个不同的变量就会传递给一个函数 这就是我到目前为止所做的: 在主文件(index.php)中,我调用一个函数: makechoice($cat_array); 这是指包含在包含文件中的此函数: function makechoice($cat_array) { $dbz = new db(); $sim = new simple

我是个傻瓜,但如果你帮我找到答案,我会很乐意拿一些棍子来对付它;)

我有一个$cat_数组中的类别列表。 我想建立一个选择下拉列表,这样当我选择其中一个选项时,一个不同的变量就会传递给一个函数

这就是我到目前为止所做的: 在主文件(index.php)中,我调用一个函数:

makechoice($cat_array);
这是指包含在包含文件中的此函数:

function makechoice($cat_array) {   
$dbz = new db();
$sim = new simple();
echo '<div class="choose-section">';
    echo '<select class="selbox" onchange="categoryAjaxData(\'facebook\',\'/includes/fancount.php\',this.value);">';
        foreach($cat_array as $cat) {   
            echo('<option value="'.$cat[0].'">'.$cat[1].'</option>');   
        }
    echo '</select>';
    echo 'Choose a section';
    echo '</div>';
    echo '<div id="facebook"><div class="facebook-midcut">',showfans($djnames, $djids, $djurl),'</div><div class="l-botcut"></div></div>';
}
函数makechoice($cat_数组){
$dbz=newdb();
$sim=new simple();
回声';
回声';
foreach($cat_数组作为$cat){
回声(“.$cat[1]”);
}
回声';
echo“选择一个部分”;
回声';
echo“”、showfans($djnames、$djids、$djurl)、“”;
}
在includes/fancount.php中,我基本上有很多不同的变量要通过showfans函数传递

e、 g.$barnames、$barids、$barurl和$restaurantname、$restaurantids、$restauranturl

showfans函数使用这些变量来显示有关它们的一些数据

这是我的javascript代码:

function categoryAjaxData(div,str,value)
{
    var url = str+'?catid='+value;
    ajaxData(div,url);
}

function ajaxData(div,str)
    {
        xmlHttp=GetXmlHttpObject();
        document.getElementById(div).innerHTML='<center><img src="images/loader.gif"></center>';        
        if(xmlHttp==null)
        {
            alert("Browser does not support HTTP Request")
            return
        }
            var url = str;
            xmlHttp.onreadystatechange = function(){ DescriptionstateChanged(div); };
            xmlHttp.open("GET",url,true);
            xmlHttp.send(null);
    }

function DescriptionstateChanged(div)
{
    if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        document.getElementById(div).innerHTML=xmlHttp.responseText;
    }
} 
函数类别数据(div、str、value)
{
var url=str+'?catid='+值;
ajaxData(div,url);
}
函数ajaxData(div,str)
{
xmlHttp=GetXmlHttpObject();
document.getElementById(div.innerHTML='';
if(xmlHttp==null)
{
警报(“浏览器不支持HTTP请求”)
返回
}
var-url=str;
xmlHttp.onreadystatechange=function(){DescriptionstateChanged(div);};
open(“GET”,url,true);
xmlHttp.send(空);
}
功能描述状态已更改(div)
{
if(xmlHttp.readyState==4 | | xmlHttp.readyState==complete)
{
document.getElementById(div.innerHTML=xmlHttp.responseText;
}
} 
目前: 当前facebook div中的内容会重新加载,我可以看到加载程序-但我一直在想如何将选择下拉列表中选择的选项链接到showfans()函数中的变量

例如。 我希望下拉列表中的“栏”显示:

echo '<div id="facebook"><div class="facebook-midcut">',showfans($barnames, $barids, $barurl),'</div><div class="l-botcut"></div></div>';
echo '<div id="facebook"><div class="facebook-midcut">',showfans($restaurantnames, $restaurantids, $restauranturl),'</div><div class="l-botcut"></div></div>';
echo'',showfans($barnames,$barids,$barurl),'';
我希望下拉列表中的“餐厅”显示:

echo '<div id="facebook"><div class="facebook-midcut">',showfans($barnames, $barids, $barurl),'</div><div class="l-botcut"></div></div>';
echo '<div id="facebook"><div class="facebook-midcut">',showfans($restaurantnames, $restaurantids, $restauranturl),'</div><div class="l-botcut"></div></div>';
echo'',showfans($restaurantnames,$restaurantids,$restaurantur),'';
我希望这有帮助!提前感谢:)

更新:

关于fancount.php,我一直在考虑各种不同的选项——但我似乎无法让它们中的任何一个正常工作

我想将下拉列表中的值传递到一个逻辑中,以便根据选择的变量值,showfans()使用某些变量,对于各种变量组合,输出代码与此类似:


echo''、showfans($restaurantnames、$restaurantids、$restauranturl),''

n00b!好的,让开:-)

您正在将
'facebook-midcut'
传递给您的
类别yajaxdata()
函数。最终的DOM查找是否知道您是指id为的div还是该类的div?如果您使用的是像jquery这样的库,如果没有进一步的分类,它将不知道您指的是哪个节点。我猜您正在尝试获取带有类的元素,因此无法使用
getElementById()

您可能还希望在
'includes/fancount.php'
的开头添加斜杠。在开头添加斜杠意味着路径将从站点的文档根引用,而不是从站点中的当前位置引用

你在使用某种js库吗?查看ajaxData函数会很有用,因为问题很可能就在那里

给你一个小提示。了解何时在PHP中使用单引号和双引号。它将使您的代码更简单、更快<代码>回声“”可以写成
echo'

我会回来看看你是否用我要求的信息更新了你的帖子,然后我可以给你更多的帮助

更新:


我假设函数
DescriptionstateChanged(div)
是实际更新div的地方,但您从未将xmlHttp对象传递给它。这是一个全局对象吗?如果不是,那么您肯定需要将它传递给
DescriptionstateChanged()
函数,我建议它无论如何都不应该是全局对象。如果
DescriptionstateChanged()
函数是实际更新div的地方,您是否也可以发布此函数?

您可能需要更改此函数:

echo '<select class="selbox" onchange="categoryAjaxData("facebook-midcut","/includes/fancount.php",this.value);">';
echo';
为此:

echo '<select class="selbox" onchange="categoryAjaxData(\'facebook-midcut\',\'/includes/fancount.php\',this.value);">';
echo';
请注意,您的代码输出将如何成为无效的HTML:

<select class="selbox" onchange="categoryAjaxData("facebook-midcut","/includes/fancount.php",this.value);">


使用ajaxData功能更新:)我也用回音“你好,马里奥,谢谢:)编辑了这篇文章。我根据第一条评论将双引号改为双引号,但没有看到。你知道如何解决这个下拉问题吗?我想让下拉列表将不同的值传递给函数showfans();如果您发布
/includes/fancount.php
的代码,将更容易帮助您…我在founcount.php中尝试了许多方法,但是,我似乎无法通过javascript传递变量。对不起,Mario,我整天都在关注这个问题,而且一直在不断地修改代码,以至于6小时前的代码看起来不一样。。。