【问题标题】:Post array with ajaxForm plugin使用 ajaxForm 插件发布数组
【发布时间】:2019-09-06 17:18:49
【问题描述】:

我正在使用这个插件 --> http://jquery.malsup.com/form/

但我无法将数组发布到 PHP 脚本。

我在 beforeSubmit 函数中试过这个:

var concepts = new Array();
$('#myTable tbody tr td span.file').each(function(){
  concepts.push($(this).text());
});
arr.push({name: 'concepts',value:concepts});

而这在数据参数中:

data: {
  concepts: function(){
    var concepts = new Array();
    $('#myTable tbody tr td span.file').each(function(){
      concepts.push($(this).text());
    });
    return concepts;
  }
}

但我总是在 PHP 脚本中收到一个逗号分隔的字符串,而不是像在任何 ajax 调用中那样的数组。

[concepts] => 20 Bafles J8 DB Line Array, 4 Bafles J12 DB Line Array, 10 Bafles J SUB, 12 Bafles B2 DB, 2 Bummpers J, 4 Bafles Q7 DB Front Fill, 12 Monitores M4 DB, 38 Amplificadores, Sub Snake, 6 Bafles Q1 DB Side Fill, 6 Bafles Q SUB DB, Centro de Carga,Andamio de 4 mts. de altura brandeados por los 4 lados con lona mesh a 1,200 dpis

以上是以下结果:

print_r($_POST)

本例中的数组有 2 个元素。

但是我发布的数据有逗号。我知道我可以编码为 JSON,然后在 PHP 脚本中解码,但我更喜欢发送和接收数组。有什么方法可以实现吗?

我尝试将 processData 用作 false,但什么也没有 :(

提前致谢!

【问题讨论】:

    标签: php jquery ajaxform


    【解决方案1】:

    在您的 beforeSubmit 函数示例中,您似乎在同一输入名称下推送多个值,而没有将其声明为数组(如果有意义的话)。查看更新的示例:

    var concepts = new Array();
    $('#myTable tbody tr td span.file').each(function(){
      concepts.push($(this).text());
    });
    
    // Added square brackets to the `name` attribute
    arr.push({name: 'concepts[]',value:concepts});
    

    如果这不起作用,我会尝试在没有ajaxForm() 插件的情况下将数据发送到服务器。例如:

    $('form').on('submit', function() {
        var data = $(this).serializeArray();
    
      $('#myTable tbody tr td span.file').each(function(){
        data.push({name: 'concepts[]', value: $(this).text()});
      });
    
      $.ajax({
        url: '/post/endpoint/example', // Change me!
        method: 'post',
        data: data
      });
    
      return false;
    
    });
    

    如果在没有插件的情况下发布有效,那么我会假设插件试图过于聪明并对表单数据进行一些奇怪的序列化。

    【讨论】:

    • 我试过你的第一个建议,但是它像一个数组一样打印它,但只有一个元素:[concepts] => Array ([0] => 2 SALONES PARA 30 PERSONAS,Copia de CD de 1-100(Impresión con inyección de tinta,estuche slim))。尝试第二个建议....
    • 第二个建议不起作用,又是一个只有一个元素的数组。但是我已经在其他项目中做了这个,也许 JQuery 版本改变了这种行为?我正在使用 V.3.2.1
    • 我的错误,第二个建议奏效了,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 2016-01-03
    • 2012-02-17
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多