Pass'&', возвращаемый из значения опции selecetd, в url
<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. Единственная проблема заключается в том, что когда параметр содержит знак " & " между ними. Как передать параметр, если его значение-что-то вроде "A & B"? urlencode кажется не очень полезным? Спасибо, что уделили мне время!
1 ответ:
Попробовал 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 теперь имеет идентификатор в качестве параметра2 соответствие параметр1(имя). И я могу использовать этот идентификатор для поиска в базе данных и возвращать строку (имя), чтобы показать снова. Это не дает прямого ответа на вопрос, но дает обходной путь.