<select name="n" onchange="if(this.selectedIndex != 0) window.location = this.options[this.selectedIndex].value">
<option value="url&param={param}">
<xsl:if condition>
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
</option>
</select>
上面的代码工作正常,它将选定的选项传递给url。唯一的问题是当参数包含'&amp;'时签到之间。 当它的值类似于'A&amp;'时,如何传递参数? B'? urlencode似乎没有帮助?谢谢你的时间!
答案 0 :(得分:0)
尝试了urlencode(),但它返回了双重转义错误。请注意,这个问题不是简单地编码整个URL,而是为了传递一些特殊字符来传递参数。我有另一种情况,其中参数值在字符串中有'+'符号。我认为显示字符串可能更好,但返回一个nameid作为值,即int。我的选项值改为这样:
<select onchange="if(this.selectedIndex != 0) window.location = this.options[this.selectedIndex].value">
<option value="" selected="selected"><xsl:value-of select="/A/D/NAME"/></option>
<xsl:for-each select="/A/B/C">
<option value="URL&Name={NAME}&ID={ID}"
<xsl:if test="NAME=/A/D/NAME"><xsl:attribute name="selected">true</xsl:attribute></xsl:if>
<xsl:value-of select="NAME"/>
</option>
</xsl:for-each>
</select>
url现在将Id作为与parameter1(Name)匹配的parameter2。我可以使用此Id来搜索数据库并返回字符串(Name)以再次显示。这并没有直接回答这个问题,但确实提供了一种解决方法。