Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将HTML数组发送到AJAX_Javascript_Jquery_Html_Ajax - Fatal编程技术网

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