本帖最后由 sti01 于 2009-09-13 09:44:41 编辑

解决方案 »

  1.   

    参数严格按照百度参数提交
    对于隐藏的input应该不要放在form中然后escape你得参数,否则中文无法在url中传递。
      

  2.   

    百度的代码中就放置了隐藏的input,而且我需要调用谷歌,因此不能完全按照百度的方式做。百度URL里面的参数都不知什么意思,不想随便加,况且搜索结果在原窗口是可以显示的,只是新窗口无法调用,搞不懂下面是百度提供的调用源码,测试没有问题
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <html>
    <head>
    <title>百度搜索调用</title>
    </head><body><SCRIPT language=javascript>
    function gowhere1(formname)
    {
     var url;
     if (formname.myselectvalue.value == "0")
     {
      url = "http://www.baidu.com/baidu";
      document.search_form1.tn.value = "baidu";
      formname.method = "get";
     }
     if (formname.myselectvalue.value == "1")
     {
      url = "http://mp3.baidu.com/m";
      document.search_form1.tn.value = "baidump3";
      document.search_form1.ct.value = "134217728";
      document.search_form1.lm.value = "-1";
     } if (formname.myselectvalue.value == "4")
     {
      document.search_form1.tn.value = "news";
      document.search_form1.cl.value = "2";
      document.search_form1.rn.value = "20";
      url = "http://news.baidu.com/ns";
     }
     if (formname.myselectvalue.value == "5")
     {
      document.search_form1.tn.value = "baiduiamge";
      document.search_form1.ct.value = "201326592";
      document.search_form1.cl.value = "2";
      document.search_form1.lm.value = "-1";
      url = "http://image.baidu.com/i";
    }
    if (formname.myselectvalue.value == "6")
     {
      url = "http://post.baidu.com/f";
      document.search_form1.tn.value = "baiduPostSearch";
      document.search_form1.ct.value = "352321536";
      document.search_form1.rn.value = "10";
      document.search_form1.lm.value = "65536";
     }  formname.action = url;
     return true;
    }
    </SCRIPT>
    <form name="search_form1" target="_blank" onsubmit="return gowhere1(this)">
    <table width="460" height="60" border="0" bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" style=font-family:宋体><tr><td>
    <TABLE width="460" height="80" border=0 cellPadding=0 cellSpacing=0>
          <INPUT name=myselectvalue type=hidden value=0>
          <INPUT name=tn type=hidden>
          <INPUT name=ct type=hidden>
          <INPUT name=lm type=hidden>
          <INPUT name=cl type=hidden>
          <INPUT name=rn type=hidden>
          <TR>
        <TD vAlign=bottom width="92%">
    <INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=4; type=radio value=0>
                        <FONT color=#0000cc style="FONT-SIZE: 12px">新闻</FONT>                   <INPUT CHECKED name=myselect onclick=javascript:this.form.myselectvalue.value=0; type=radio value=0>
                        <SPAN class=f12><FONT color=#0000cc style="FONT-SIZE: 12px">网页</FONT></SPAN>
                        <INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=1; type=radio value=1>
                        <SPAN class=f12><FONT color=#0000cc style="FONT-SIZE: 12px">mp3</FONT></SPAN>
    <INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=6; type=radio value=0>
    <FONT color=#0000cc style="FONT-SIZE: 12px">贴吧</FONT>
    <INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=5; type=radio value=0>
                        <FONT color=#0000cc style="FONT-SIZE: 12px">图片</FONT>                    <TABLE align=right border=0 cellPadding=0 cellSpacing=0 width="100%">
                          <TBODY>
                            <TR>
                              <TD><FONT style="FONT-SIZE: 12px">
                                <input id=word name=word size="40">
                                </FONT> <input type="submit" value="百度搜索"> </TD></TR>       </form>
    </body>
    </html>
      

  3.   

    搜索用的是get提交,所以你的参数起不了作用
    <INPUT name="input"改为<INPUT name="word"并把其它参数赋上相应的值
    或<form method="post"
      

  4.   

        location.href=result;    formname.action = result;把这两句话位置调换一下(建议直接删除此句: location.href=result;)
      

  5.   

    谢谢各位兄弟的参与,开阔了思路,按各位说法,改进了代码,现在百度搜索可以实现了,奇怪的是没有一条method语句,竟然也可以执行现在又遇到新的问题:百度和谷歌的关键词变量名不同,一个是word,一个是q,但我想在一个搜索框中解决问题,但一个搜索框怎么能取两个变量名呢,谁有办法?修改过的代码如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
    <html>
    <head>
    <title>搜索调用测试</title>
    <script>function search(formname)
    {
    var result;
    for(var i=0;i<SearchForm.Site.length;i++)
    {
    for(var j=0;j<SearchForm.myselect.length;j++)
    {
    if(SearchForm.Site[i].checked & SearchForm.myselect[j].checked)
    {
    if(i==0 & j==0)
    {
    result = "http://www.baidu.com/baidu";
    document.SearchForm.tn.value = "baidu";
    }
    if(i==0 & j==1)
    {
    document.SearchForm.tn.value = "news";
    document.SearchForm.cl.value = "2";
    document.SearchForm.rn.value = "20";
    result = "http://news.baidu.com/ns";
    }
    if(i==0 & j==2)
    {
    result = "http://video.baidu.com/v";
    }
    if(i==0 & j==3)
    {
    document.SearchForm.tn.value = "baiduiamge";
    document.SearchForm.ct.value = "201326592";
    document.SearchForm.cl.value = "2";
    document.SearchForm.lm.value = "-1";
    result = "http://image.baidu.com/i";
    }
    if(i==0 & j==4)
    {
    result = "http://mp3.baidu.com/m";
    document.SearchForm.tn.value = "baidump3";
    document.SearchForm.ct.value = "134217728";
    document.SearchForm.lm.value = "-1";
    }
    if(i==1 & j==0)
    {
    result = "http://www.google.cn/search?q=";
    }
    if(i==1 & j==1)
    {
    result = "http://news.google.cn/news/search?hl=zh-CN&q=";
    }
    if(i==1 & j==2)
    {
    result = "http://video.google.cn/videosearch?q=";
    }
    if(i==1 & j==3)
    {
    result = "http://images.google.cn/images?q=";
    }
    if(i==1 & j==4)
    {
    result = "http://www.google.cn/music/search?hl=zh-CN&ie=UTF-8&q=";
    }
    }
    }
    }
    formname.action = result;
    return true;
    }</script>
    </head>
    <body>
    <form name="SearchForm" onsubmit="return search(this)" target="_blank">

    <div id=input-left></div>
    <div>
    <INPUT name=word class="inputtext" size="40" maxlength="100"><INPUT class="button" type="submit" value="搜 索"> 
    </div>

          <INPUT name=myselectvalue type=hidden value=0>
          <INPUT name=tn type=hidden>
          <INPUT name=ct type=hidden>
          <INPUT name=lm type=hidden>
          <INPUT name=cl type=hidden>
          <INPUT name=rn type=hidden> <div id=radio-left>
    <INPUT type=radio CHECKED value=0 name=Site lisNum="0">百度
    <INPUT  type=radio value=0 name=Site lisNum="1">谷歌
    </div>

    <div id=radio-right>
     <LABEL><INPUT CHECKED name=myselect onclick=javascript:this.form.myselectvalue.value=0; type=radio value=0>网页</LABEL>
     <LABEL><INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=1; type=radio value=0>新闻</LABEL>
     <LABEL><INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=2; type=radio value=0>视频</LABEL>
     <LABEL><INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=3; type=radio value=0>图片</LABEL>
     <LABEL><INPUT name=myselect onclick=javascript:this.form.myselectvalue.value=4; type=radio value=0>音乐</LABEL>
    </div>
    </form>
    </body>
    </html>
      

  6.   

    <INPUT name=word class="inputtext" size="40" maxlength="100">
    <INPUT type="hidden" name=q class="inputtext" size="40" maxlength="100">
    在submit之前把word的值赋给q