Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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 一次获取发送到服务器的所有值_Javascript_Jquery_Html - Fatal编程技术网

Javascript 一次获取发送到服务器的所有值

Javascript 一次获取发送到服务器的所有值,javascript,jquery,html,Javascript,Jquery,Html,我有一个表单,一堆输入和提交按钮。一些输入是动态添加和删除的。其中一些可能被禁用,也可能未被禁用,但我仍然需要获取它们的服务器值 因此,我必须向按钮添加一个处理程序,手动收集禁用输入的值,并将它们添加到其他已启用输入。投入。但我不想这样做,因为它看起来太复杂了,因为一些输入是动态添加/删除的 我还可以为每个可以禁用的输入添加隐藏的输入,但仍然有点复杂 我想要的类似于1。但是,我不想通过jquery选择器手动枚举启用的输入,而是希望通过jquery函数或任何其他方式一次将所有值发送到服务器。然后由

我有一个表单,一堆输入和提交按钮。一些输入是动态添加和删除的。其中一些可能被禁用,也可能未被禁用,但我仍然需要获取它们的服务器值

因此,我必须向按钮添加一个处理程序,手动收集禁用输入的值,并将它们添加到其他已启用输入。投入。但我不想这样做,因为它看起来太复杂了,因为一些输入是动态添加/删除的

我还可以为每个可以禁用的输入添加隐藏的输入,但仍然有点复杂

我想要的类似于1。但是,我不想通过jquery选择器手动枚举启用的输入,而是希望通过jquery函数或任何其他方式一次将所有值发送到服务器。然后由选择器手动将禁用输入的值相加。这可能吗

您可以使用jQuery来实现这一点

函数的一般结构如下所示

var mydata = $("#myform").serialize();
$.ajax({
    type: "POST",
    url: "ajaxurl",
    data: mydata,
    dataType: "json",
    success: function(data) {
        ...
    }
});
所以我想你也有一个问题,那就是如何获得禁用字段。您可以使用此线程中建议的函数:

为了让答案完整,我将从那里复制插件

用法如下:

var data = $('form').serializeAllArray();
下面是插件本身:

(function ($) {
  $.fn.serializeAllArray = function () {
    var obj = {};

    $('input',this).each(function () { 
        obj[this.name] = $(this).val(); 
    });
    return $.param(obj);
  }
})(jQuery);

您可以在提交处理程序中使用如下策略:

选择所有禁用的元素。。不要忘记这些 启用所有禁用的元素 序列化表单。。获取所有数据 禁用元素返回 提交你的表格。
如何获取我的数据?@AlexanderSupertramp-这是第一行。注意,您需要检查$.serialize是否会添加禁用的元素值;我猜不会,所以在这种情况下,您需要手动将其添加到mydata中。为清楚起见,$.serialize创建一个url编码字符串,而不是JSON字符串;请参阅手册链接,以获取底部红色文本的示例。序列化不包括禁用的元素。这将序列化所有表单元素,而不仅仅是输入?另外,$this.val也可以很容易地成为$.each中的this.value。为什么要序列化数组,而不是序列化?这似乎很复杂,甚至用户都会注意到启用/禁用元素。比手动获取值更复杂?启用/禁用只需几分之一毫秒,因为您不会逐个执行此操作。。。。。好