我有这些复选框:
<input type="checkbox" name="style[]" value="1" checked="checked" />
<input type="checkbox" name="style[]" value="2" />
<input type="checkbox" name="style[]" value="3" checked="checked" />
<input type="checkbox" name="style[]" value="4" checked="checked" />
<input type="checkbox" name="style[]" value="5" />
和这个jquery处理程序:
<script type="text/javascript">
$(document).ready(function() {
$('.linkStyle').click(function(e) {
//
});
});
</script>
所以,当我点击一个复选框时,我想将数组样式[]发送到服务器运行AJAX(带有实际值)。
我该怎么做?
修改
试过:
$.post("list/browse_ajax.php", {id:"browseUpdate", actualArtist:browseArtist, actualEvent:browseEvent, actualData:browseData, style:$('#browseTableStyle:checkbox').serialize()},
function(data) {
$("#browseList").html(data);
}
);
但样式[]不发送......
编辑2 - 序列化问题
这是整个代码:
<form id="browseForm">
<div class="wideinfo">
<div class="content">
<div class="tableList1">
Style
</div>
<div class="tableList2">
<span><input type="checkbox" name="style[]" value="Style1" checked="checked" /> Style1</span>
<span><input type="checkbox" name="style[]" value="Style2" /> Style2</span>
<span><input type="checkbox" name="style[]" value="Style3" checked="checked" /> Style3</span>
<span><input type="checkbox" name="style[]" value="Style4" checked="checked" /> Style4</span>
<span><input type="checkbox" name="style[]" value="Style2" /> Style5</span>
</div>
</div>
</div>
</form>
但是:
style:$('#browseForm').serialize()
它发送此信息(在Fiddler上查看)
style: style%5B%5D=Style1&style%5B%5D=Style3&style%5B%5D=Style4
不是:
style[]: Style1
style[]: Style3
style[]: Style4
最后一个是真实的/综合的HTML数组...
答案 0 :(得分:4)
怎么样:
$.post('my-url', $(':checkbox').serialize(), function(data, textStatus, jqXHR){
// my callback body
});
编辑:实际上,序列化函数仅适用于表单(因此序列化表单字段)。所以你必须在一个表单中包装你的字段。见下文。
答案 1 :(得分:2)
当您最终提交了字符串style%5B%5D=Style1&style%5B%5D=Style3&style%5B%5D=Style4
时,您可以检索全面的数组:
parse_str($_POST['style'], $data);
$data
变量包含:
array(
"style" => array(
0 => "Style1",
1 => "Style3",
2 => "Style4",
)
)
它能解决你的问题吗?
答案 2 :(得分:1)
首先,你的回调似乎并不一致:
function(data) {
$("#browseList").html(msg);
}
您可能想说:
function(data) {
$("#browseList").html(data);
}
还要检查firebug或您的资源管理器javascript debuger,看看是否有任何错误。您还可以向我们展示实际的提交数据。 Finnaly调用的结果是什么:
$(':checkbox').serialize()
答案 3 :(得分:1)
是的,这应该有用。
style:$('#browseForm').serialize()
最后,我强烈建议您在表单中包含所有帖子数据,以便您可以这样做:
$.post('my-url', $('form').serialize(), function(data){
$("#browseList").html(data);
});
它更干净,更直接,更易于维护。之后,您的PHP脚本应该处理其余部分。