function showpage(url)          //ajax 不刷新页面 分类选择
{ http_request = false; if (window.XMLHttpRequest) 

http_request = new XMLHttpRequest
         if (http_request.overrideMimeType) 
    {
http_request.overrideMimeType('text/xml');//修改header
    }
}
        else if (window.ActiveXObject) { // 判定浏览器是 IE
try {
     http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
                catch (e) 
                    {
try {
     http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } 
               catch (e) {}
        }
}

if (!http_request) {//初始化xmlhttp组件
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
    http_request.onreadystatechange = pageContents; //指定当readyState属性改变时的事件处理句柄
http_request.open('post', url,true);
http_request.send(null);
}function pageContents()            //处理返回数据 显示数据
{
if(http_request.readyState == 4 && http_request.status == 200)
{
    document.getElementById("jdz_sfenlei").innerHTML = http_request.responseText;
}
}
function fenlei(jdz_dfenlei)       //无刷新联动下拉框
{
showpage('function.php?action=sfenlei&dfenlei='+jdz_dfenlei);
}
下面这个是 POST.PHP
商品大分类<select name="jdz_dfenlei"  style="margin:5px 0px 0px 10px;" onchange="fenlei(document.getElementById('jdz_dfenlei').value)"> // 如何这个改变就调用AJAX商品小分类<select id="jdz_sfenlei"  name="jdz_sfenlei" style="margin:5px 0px 0px 10px;"> //这个是接收AJAX 数据的 下拉框
</select>这个FUNCTION.PHP 的数据循环取出小分类数据if($_REQUEST["action"]==sfenlei)
{
$pagecount=mysql_query("select * from ".$_REQUEST["dfenlei"]);
while($show=mysql_fetch_array($pagecount))
{
echo"<option value=\"$show[name]\">$show[name]</option>";
}希望看下那错了,小分类的数据框就是不显示

解决方案 »

  1.   

    这个问题,经过多次了!商品小分类 <select id="jdz_sfenlei"  name="jdz_sfenlei" style="margin:5px 0px 0px 10px;"> //这个是接收AJAX 数据的 下拉框
    </select> 下拉列表的innerHTML只读,不能写,你可以将<select id="jdz_sfenlei"  name="jdz_sfenlei" style="margin:5px 0px 0px 10px;"> //这个是接收AJAX 数据的 下拉框
    </select> 在后以一起直接输出!
      

  2.   

    function pageContents()            //处理返回数据 显示数据 

    if(http_request.readyState == 4 && http_request.status == 200) 

        document.getElementById("jdz_sfenlei").innerHTML = http_request.responseText; 

    } 是说在这个函数后面直接输出吗???
      

  3.   

    FUNCTION.PHP:
    if($_REQUEST["action"]==sfenlei)
    {
    $pagecount=mysql_query("select * from ".$_REQUEST["dfenlei"]);
    while($show=mysql_fetch_array($pagecount))
    {
    $str=$str." <option value=\"$show[name]\">$show[name] </option>";
    }
    echo '<select id="jdz_sfenlei"  name="jdz_sfenlei" style="margin:5px 0px 0px 10px;">'.$str.'</select>';显示页面
    function pageContents()            //处理返回数据 显示数据
    {
    if(http_request.readyState == 4 && http_request.status == 200)
    {
        document.getElementById("fenlei").innerHTML = http_request.responseText;
    }
    }
    商品小分类 <div id="fenlei"></div>
      

  4.   

    我刚写了一个用jQuery实现的例子,你可以去看看:http://www.rsywx.net/jquery/demos/,两级、三级都没有问题。
      

  5.   

    <div id="fenlei"> 
    <select id="jdz_sfenlei"  name="jdz_sfenlei" style="margin:5px 0px 0px 10px;">
    </select> 
    </div> 
      

  6.   

    $str  这个变量取出来的都是乱码
      

  7.   

    FUNCTION.PHP: 
    <?php   header('Content-Type:   text/html;   charset=utf-8');?>   
    加上这一句,字符跟你的页面字符一致就行了。
      

  8.   

    这个我在header.php 里已经加了,我的字符集是GB2312的
      

  9.   

    TMD的终于搞好了,原来是AJAX 存在编码问题$str=$str.iconv("GB2312", "UTF-8", "<option value=\"$show[name]\">$show[name] </option>");加个ICONV 的转换函数就OK了