我有一个名为Order的HTML页面,其中包含一个下拉列表:
<select name="Pizzas">
<option value="15.80" name="Napoletana">Napoletana</option>
<option value="16.95" name="Margherita">Margherita</option>
<option value="17.50" name="Sardiniana">Sardiniana</option>
<option value="16.85" name="Pollo Dolce">Pollo Dolce</option>
<option value="14.95" name="Funghi">Funghi</option>
<option value="15.60" name="Patate Con Aglio">Patate Con Aglio</option>
<option value="15.60" name="Romana">Romana</option>
<option value="17.85" name="Gamberetti">Gamberetti</option>
<option value="18.75" name="Capri">Capri</option>
<option value="14.30" name="La Mexicana">La Mexicana</option>
<option value="15.60" name="Pomodori Secchi">Pomodori Secchi</option>
<option value="17.70" name="Proscuitto Con Pomodori">Proscuitto Con Pomodori</option>
<option value="19.90" name="Siciliana">Siciliana</option>
<option value="16.70" name="Palermo">Palermo</option>
<option value="19.05" name="Pesto">Pesto</option>
</select>
我想获取选项的名称和值,以便将其传递给Servlet。到目前为止,我想出了如何传递值,即:
String[] pizzas = request.getParameterValues("Pizzas");
然后显示它:
out.println("<strong>Pizza: </strong>");
if (pizzas != null) {
for (String pizza: pizzas) {
out.println("<br/>Price: " + pizza);
}
}
那么我怎样才能传递这些名字呢?我正在尝试创建收据,以便我可以:披萨:“名称”和价格:“价格”!
答案 0 :(得分:1)
仅将选项值传递给服务器。但是,通过创造性地使用选项的值,您可以传递多个数据作为值。
<option value="15.80;Napoletana">Napoletana</option>
在您的服务器代码中,将值拆分为商品分隔符...
String f[] = pizza.split(";");
System.out.println(f[1] + " costs " + f[0]);
我应该指出:存储关键信息客户端正在打开攻击。恶意用户可以制作他们自己的请求字符串,这样他们就可以订购&#34; 0.80; Napoletana&#34;披萨,节省15美元。
最好使用唯一的ID客户端,并查找关键信息服务器端。
答案 1 :(得分:-1)
发布表单时,它会使用select元素的名称发送所选选项的值,而不是选项元素的name属性。 所以你可以获得Pizzas =选择的选项值。比如比萨饼:15.60
您可以尝试发送自定义json。
var formData = {};
formData.pizzaName = $('#Pizzas').find(":selected").attr("name");
formData.pizzaValue = $('#Pizzas').find(":selected").val();
// You may add more data from your form here
$.ajax({
type: 'POST',
url: 'Test',
data: JSON.stringify(formData),
success: function(data) { console.log("Success"); },
contentType: "application/json",
dataType: 'json'
});