写一个隐藏的的iframe,表单域选择时提交到iframe,里面的asp取数据库的description,写个<script>parent.description.value="<%=rs("description")%>"</script>..............

解决方案 »

  1.   

    我给你写一个例子吧http://www.home1000.net/test/runmin/test.htm
      

  2.   

    HTML部分代码(test.htm)<script id=getBeanStruct></script>
    <script>
    function load(a)
    {
    var g = new Array();
    var serverScriptType = ".asp?";
    g = location.href.split("?");
    y = location.pathname.split(".");
    getBeanStruct.src = y[0]+serverScriptType+"news_id="+a;
    }
    </script>
    <BODY>
    <select onchange="load(this.value)">
    <option value="通知">通知</option>
    <option value="房子">房子</option>
    <option value="材料">材料</option>
    <option value="有害">有害</option>
    </select>
    <textarea id=t></textarea>
    </BODY>查询部分代码<%
        '这里省略了查询程序
    %>
    alert("这里是从数据库里查出来的:<%=news_title%>");
    t.value = "<%=news_title%>";
    注意,查询程序其实就是用的服务器端写出来的JS代码,load函数里面前四行是用来解析url的,不必理会。
      

  3.   

    忘记了,查询代码应该名为test.asp,否则由于load里面写的自动解析页面名(test.htm点前面的test位置),会找不到,可以改成手写,那样就随便了。原理,通过HTML事件触发修改<script>标签的src属性(***.asp?***=***),并通过url提交查询内容过去,在src属性指定的SERVER PAGE里用脚本输出js语句(包含查询结果),通过这个js语句控制你要修改的目标的值。跟用隐藏IFRAME效果一样,但是要更隐蔽一些,并且刷新的时候浏览器状态条反应没有frame刷新那么强烈。另外还有方法,(RDS),等等,我就知道这两个,XML(MS的XML相关组件吧)肯定也能做。
      

  4.   

    那个load函数我不太懂!
    能给我注释一下吗?
      

  5.   

    description和model_name 都在一个表里吗?如果是就更简单
    把他们一起读出来,下拉框为  model_name里的option的value值就是对应的
    description,option的text值是model_name 
    在select里加上onchange="document.forms[0].description.value=(this.options[this.selectedIndex].value;"
      

  6.   

    function load(a)
    {
    getBeanStruct.src = "test.asp?news_id="+a;
    }
    其实你只要写一句就可以了,这样你能明白了吧?我写那一段只不过是为了能不写死src,并且自动找到当前htm页面的同名asp(php)文件,就是说,如果这么用的话,hello.htm默认的服务器查询程序就是hello.asp,无须手工指定。
      

  7.   

    并且这种写法有一个特点,第一次查询可能需要到运行服务器脚本,当你第二次查询的时候,实际的查询不是从服务器上读取,是从历史页面里读取的,这样有了一个缓冲,可以减轻服务器压力,但是这又造成,数据的不一致,但是这种不一致是可以控制的,解决方法,new Date(),如果想从历史页面再次读取,不加时间,如果想读取数据的话,在提交的url里加上这个date就不会读取历史(好象这个类似时间戳的功能)。
      

  8.   

    zhp您好!
    您的回答让我觉得有些象绕口令,需要我分析一下,呵呵,开个玩笑:P
    谢谢你:)
      

  9.   

    zhp:您好!
    您教我的方法,我有些不太明白!可以再说的“通俗”些吗?
    小妹我才刚刚起步,已经快抓破头皮了:P
      

  10.   

    呵呵,又学了一种方法。我以前知道的3种方法是:
    xmlhttp
    xmldom
    隐藏iframe
    前两种仅限于ie
      

  11.   

    如果ASP的话,再教你一种RDS,这种方法,我知道,但是没有用成过。
      

  12.   


    我来试试替他解释一下:<SCRIPT LANGUAGE="JavaScript">
    <!--
    function load(a)
    {
    var g = new Array();
    //定义数组,就不说了吧 var serverScriptType = ".asp?"; 
    //准备了一个字符串,“.asp”是个后缀,不稀奇,不过他在自己的程序里面其实写的是".php",不要给他晃点了 //“?”就有一点意思了,它告诉服务器后面有参数。用“?”传参数的格式是:?参数名=参数值&参数名=参数值.....
    //“&”是各组参数之间的分隔符,不过在这个程序中没有用到。 g = location.href.split("?");
    //好像没有用到 y = location.pathname.split(".");
    //把当前地址对象(http://www.home1000.net/test/runmin/test.htm)的路径名(/test/runmin/test.htm)以小数点为分隔符分解成字符串数组,这个数组的第一个元素为"/test/runmin/test",第二个元素为“.htm” getBeanStruct.src = y[0]+serverScriptType+"news_id="+a;
    /*
    获得一个新的字符串:上一步的第一个元素"/test/runmin/test" 加上第二步得到的serverScriptType(.asp?) 
    加上"news_id="再加上函数接收到的参数a(值为“通知”或“房子”之类的)
    得到这样一个字符串:“/test/runmin/test.asp?news_id=通知”
    不过在他自己的程序里面当然是“/test/runmin/test.php?news_id=通知”啦
    然后他的服务器端有个test.php程序,会接收这个news_id参数的值,然后查询数据库,最后根据查询结果返回一段javascript代码
     这是从它的服务器上返回回来的代码:
    alert("这里是从数据库里查出来的:关于加强房地产开发项目管理的通知");
    t.value = "关于加强房地产开发项目管理的通知"
    最后,由于来自同一个地址的页面和脚本会被本地缓存,下次就不从服务器再下载了,
    所以他提到了new Date(),意思是把时间作为一个参数加进参数表里面去,
    这样浏览器就会以为你在要求一个新的脚本了,象这样:
    getBeanStruct.src = y[0]+serverScriptType+"news_id="+a + “& time="+new Date();
    */}
    //-->
    </SCRIPT>唉,罗里罗嗦,越说越复杂,有人要打我了