0

有人可以告诉我下面的函数有什么问题吗?

<form name="Menu" id="menu" onsubmit="this.enviar();">
<select id="pais" name="pais" size="1"">
  <option value="polonia">Polónia</option>
  <option value="portugal">Portugal</option>
  <option value="reino-unido">Reino Unido</option>
</select>
<select id="area" name="area" size="1">
  <option value="#">Seleciona uma área </option>
  <option value="arquitetura">Arquitetura</option>
  <option value="comunicacao">Comunicação</option>
  <option value="design">Design</option>
</select>
<input type="submit" value="Pesquisar"/>
</form>
<script type="text/javascript">// <![CDATA[
function vai(link) { location.href= link; }
function enviar(){
var pais = document.menu.pais.value;
var area = document.menu.area.value;
           window.location.href("http://www.teste.pt/tag/"+pais+"+"+area);
}
// ]]></script>

而不是去链接http://www.teste.pt/tag/pais+area,这样做:http://teste.pt/?pais=holanda&area=informatica

有人可以帮助我吗?

4

1 回答 1

0

只需更改函数href中的目标即可。enviar()由于变量正在成为查询字符串的一部分,因此建议也将它们包装起来,encodeURIComponent以便为此目的对它们进行正确编码。

function enviar(){
  // Also recommend using getElementById() to get these nodes
  var pais = document.getElementById("pais").value;
  var area = document.getElementById("area").value;
  window.location.href("http://teste.pt?pais=" + encodeURIComponent(pais) + "&area=" + encodeURIComponent(area));
}

评论后更新:

如果您希望 JavaScript 继续重定向到同一链接http://www.teste.pt/tag/"+pais+"+"+area但在内部将其处理为http://teste.pt/?pais=holanda&area=informatica,则必须使用重写规则来完成。如果您使用的是 Apache,则应将以下内容放入您的 .htaccess 文件中:

RewriteEngine On
RewriteRule ^tag/([^+]+)\+(.*)$ /?pais=$1&area=$2 [L]
于 2012-08-07T13:36:33.530 回答