Javascript 如何将HTML数组发送到AJAX
我有以下复选框:Javascript 如何将HTML数组发送到AJAX,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有以下复选框: <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="st
<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" />
但是样式[]不是发送
编辑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>
它发送这个(在Fiddler上检查)
不是:
最后是一个真实的/综合的HTML数组…关于:
$.post('my-url', $(':checkbox').serialize(), function(data, textStatus, jqXHR){
// my callback body
});
编辑:实际上,序列化函数只在表单上工作(从而序列化表单字段)。因此,您必须将字段包装成一个表单。见下文。关于:
$.post('my-url', $(':checkbox').serialize(), function(data, textStatus, jqXHR){
// my callback body
});
编辑:实际上,序列化函数只在表单上工作(从而序列化表单字段)。因此,您必须将字段包装成一个表单。请参见下文。首先,您的回调似乎不一致:
function(data) {
$("#browseList").html(msg);
}
你可能想说:
function(data) {
$("#browseList").html(data);
}
还需要检查firebug或explorer javascript调试程序,以查看是否存在任何错误。你也可以告诉我们实际提交的数据。最后,拨打以下电话的结果是什么:
$(':checkbox').serialize()
首先,您的回调似乎不一致:
function(data) {
$("#browseList").html(msg);
}
你可能想说:
function(data) {
$("#browseList").html(data);
}
还需要检查firebug或explorer javascript调试程序,以查看是否存在任何错误。你也可以告诉我们实际提交的数据。最后,拨打以下电话的结果是什么:
$(':checkbox').serialize()
是的,这应该行得通
style:$('#browseForm').serialize()
最后,我强烈建议您在表单中包含所有帖子数据,以便您可以简单地执行以下操作:
$.post('my-url', $('form').serialize(), function(data){
$("#browseList").html(data);
});
它更干净、直观、更易于维护。之后,PHP脚本将处理其余部分。是的,这应该可以工作
style:$('#browseForm').serialize()
最后,我强烈建议您在表单中包含所有帖子数据,以便您可以简单地执行以下操作:
$.post('my-url', $('form').serialize(), function(data){
$("#browseList").html(data);
});
它更干净、直观、更易于维护。之后,PHP脚本将处理其余部分。当您最终提交字符串时,
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",
)
)
它解决了您的问题吗?当您最终提交字符串时
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",
)
)
它解决了你的问题吗?嗯。。。事实上,我也不知道这个函数。ajax不是更好吗?$.load、$.post、$.get。。。只是预先配置的$.ajax函数的快捷方式。$.post是$.ajaxuhm的一个更具体的版本。。。事实上,我也不知道这个函数。ajax不是更好吗?$.load、$.post、$.get。。。只是预先配置的$.ajax函数的快捷方式。$.post是$.ajaxYeah的一个更具体的版本,数据消息是错误的复制,粘贴在这里:)JS调试器上没有错误。尝试使用Fiddler:style检查值,但该值为空…因此无法获得正确的复选框。另外,它们是一个id为browseTableStyle的div,所以我也尝试使用“#browseTableStyle:checkbox”,但什么都没有。看起来它作为变量而不是数组到达服务器?!?!?!如何查看$(':checkbox').serialize()的结果?您可以在web开发控制台上键入$(':checkbox').serialize()的结果。我还检查并序列化了表单元素。因此,如果您将输入包装在表单中,您将执行:$('form').serialize()。很抱歉,读取序列化文档时,会创建一个值字符串;我需要一个值数组;所以我需要传递一些东西,比如style[],而不是style和序列化的值……我明白您的担心,但最后httppost数据只是一个长字符串。PHP应该为您取消字符串序列化,您将得到一个标准数组。至少,它对我是有效的。结果是,通过一个普通请求传递表单,例如:style[]=1,style[]=3,style[]=4;在服务器端,这是一个数组,我通过PHP上的$_get['style']获得它;你明白我的意思吗?:)是的,数据消息是一个错误的复制和粘贴在这里:)没有错误的JS调试器。尝试使用Fiddler:style检查值,但该值为空…因此无法获得正确的复选框。另外,它们是一个id为browseTableStyle的div,所以我也尝试使用“#browseTableStyle:checkbox”,但什么都没有。看起来它作为变量而不是数组到达服务器?!?!?!如何查看$(':checkbox').serialize()的结果?您可以在web开发控制台上键入$(':checkbox').serialize()的结果。我还检查并序列化了表单元素。因此,如果您将输入包装在表单中,您将执行:$('form').serialize()。很抱歉,读取序列化文档时,会创建一个值字符串;我需要一个值数组;所以我需要传递一些东西,比如style[],而不是style和序列化的值……我明白您的担心,但最后httppost数据只是一个长字符串。PHP应该为您取消字符串序列化,您将得到一个标准数组。至少,它对我是有效的。结果是,通过一个普通请求传递表单,例如:style[]=1,style[]=3,style[]=4;在服务器端,这是一个数组,我通过PHP上的$_get['style']获得它;你明白我的意思吗?:)没有人,这是我说的:我得到字符串样式%5B%5D=Style1&style%5B%5D=Style3&style%5B%5D=Style4……这不是一个HTML数组,而是一个字符串!如果我正常发送表单,我将发送3个名为style[](每个)的变量,其值为:这是一个数组:)是的,但样式%5B%5D类似于样式[]。所以序列化的字符串是可以的。因此,您需要做的是在php中对其进行序列化,例如使用parse_str:.Uhm..但是如何使用jQuery发送不同的参数(例如许多样式[])?这就是我需要知道的:)没有人,这是我说的:我得到字符串样式%5B%5D=Style1&style%5B%5D=Style3&style%5B%5D=Style4……这不是一个HTML数组,是一个字符串!如果我正常发送表单,我将发送3个名为style[](每个)的变量,其值为:这是一个数组:)是的,但样式%5B%5D类似于样式[]。所以序列化字符串i