我有一个选择框:
<select name="sub_selected" class="bmarks" id="sub_selected"
style="width:400px" size="5">
<option value="1">first value</option>
<option value="2">second value</option>
<option value="4">other vale</option>
</select>
我想将所有值传递给php。
我编写以下代码但不起作用:
$('#sub_selected').each(function(i, selected){
foo[i] = $(selected).val();
var title = $('#prop_tile').attr('value');
$.ajax({
type: "POST",
url: "add_process.php",
data: "title="+ title +"& stages="+ foo,
success: function(html){
if (html==1){
$('div.saving').hide();
$('div.success').fadeIn();
}else {
$('div.saving').hide();
$('div.nosuccess').fadeIn();
}
}
});
我想将选择框的所有值提交到php以存储在mysql中,最好采用这种格式(1,2,4)。
由于
答案 0 :(得分:4)
我对jquery了解不多,但在我看来,您可以纯粹在HTML级别解决您的问题,假设您的jquery只是提交包含您的<select>
标记的表单。 <select>
的行为方式是浏览器只会在所选的帖子中提交数据。如果选项未突出显示,则不会将其发送到POST
。
您可以按如下方式解决问题;首先,您的<select>
需要multiple="multiple"
属性,以便可以选择多个元素。其次,将selected="selected"
属性添加到每个<option>
标记中。最后,如果您不希望用户在表单提交之前取消选择任何选项,请将disabled="disabled"
属性添加到<select>
标记。
更新:您可能还想将name="sub_selected"
更改为name="sub_selected[]"
,以便您可以在PHP端接收值作为数组。您需要将sub_selected
的jquery引用调整为sub_selected[]
。
答案 1 :(得分:0)
如果你真的想要所有这些,那就不要那样做了。使用PHP获取它们的方式与显示选择选项的方式相同。
答案 2 :(得分:0)
如果你真的想用jquery来做,这是一个简单/正确的方法:
// I'm not sure what the '#prop_tile' element is so I didn't
// include it for this example
var all_vals = new Array;
$('#sub_selected option').each(function() {
all_vals.push($(this).val());
});
$.post('add_process.php', { stages:all_vals }, function(html) {
$('div.saving').hide();
$('div.success').fadeIn();
},'html');
在接收端,你可以这样做:
<?php
if(isset($_POST['all_vals'])) {
$all_vals = $_POST['all_vals'];
// $all_vals is now an array = [1,2,4]
}
?>
注意:如果你透露更多关于你为什么要这样做的详细信息会很好,因为,皮肤深层,这似乎是一件愚蠢的事情。