【问题标题】:JQuery cloning of select areas and passing all to PHP Array选择区域的 JQuery 克隆并将所有区域传递给 PHP Array
【发布时间】:2016-10-05 10:51:44
【问题描述】:

我需要通过 post 将表单的克隆区域传递给 PHP,然后将每个区域传递给数组。

我的代码

    <div class="input-main white_bg cloneneedsanalysis">
    <div class="action-input clone-needs-analysis">
    <div class="action-input-white-shorter">
    <div class="inner-sub-title-less-padding">
    <p>Audience Analysis</p>
    </div>
    <div class="col-md-12">
    <div class="form-group">
    <select class="select2 select2-multiple" multiple="multiple" data-placeholder="Choose ..." name="needs_analysis[]">
    <option value="">-- Choose Audience Categories --</option>
    <option value="536"> Finance -  - Cash collection </option>
    <option value="537"> IT -  - Comms IT </option>
    <option value="538"> Strategy -  - Strategy team 1 </option>
    </select>
    </div>
    </div>
    </div>
    <div class="action-input-plus-needs-analysis">  </div>
    <div class="action-input-remove-needs-analysis"> </div>
    </div>
    </div>

克隆有效,但是当我通过 POST 发送到 PHP 时,它只会捕获最后一个,因为它们都被称为 needs_analysis[]

那么,在克隆时如何编辑名称以使其不同以及如何让 PHP 循环遍历每个数组?

我的 JQuery;

$(document).on('click', '.clone_needs_analysis_button', function(e) {
e.preventDefault();
$(this).closest('.clone-needs-analysis').clone().insertAfter('.cloneneedsanalysis:last');
$(this).closest('.action-input-plus').hide();
$(this).closest('.action-input-remove').removeClass('hidden');

我的PHP;

$needs_analysis = array();
foreach ($_POST['needs_analysis'] as $key => $value) {
    $needs_analysis[$key]['audience_id'] = $value;
    $needs_analysis[$key]['created'] = $_POST['updated'];
    $needs_analysis[$key]['created_by'] = $_POST['updated_by'];
    $needs_analysis[$key]['solution_id'] = $_POST['solution_id'];
}
foreach ($needs_analysis as $needs_analysis_insert) {
$db->insert('design_needs_analysis', $needs_analysis_insert);
}

【问题讨论】:

  • 您的其他输入(例如由 ,audience 创建的更新)在哪里?

标签: javascript php jquery html arrays


【解决方案1】:

您的多选名称应如下所示:

needs_analysis[1][]
needs_analysis[2][]

您可以在生成页面时在服务器端执行此操作,也可以在 JavaScript 中重命名它们:

$('[name="needs_analysis[]"]').each(function(index) {
    var currentElement = $(this)
    currentElement.attr('name', 'needs_analysis['+index+'][]')
})

为了遍历PHP 中的值,您可以这样做:

foreach ($_POST['needs_analysis'] as $k=>$v) {
    //$v represents the value array for a select element
    foreach ($v as $k2=>$v2) {
        //do something with each value
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2011-08-13
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多