JQUERY Ajax - POST 以数组名称传递的数据

JQUERY Ajax - POST Data passed with Array names

我有一个表单,输入字段看起来像这样:

<input class="sku_entry" name="sku['901257']['1']" id="sku['901257']['1']" placeholder="Enter Licence" />

<input class="sku_entry" name="sku['901257']['2']" id="sku['901257']['2']" placeholder="Enter Licence" />

<input class="sku_entry" name="sku['901257']['3']" id="sku['901257']['3']" placeholder="Enter Licence" />

每个条目有两个数组名称,一个是产品编号,第二个是计数(订单购物车中的多个项目)我可以将其直接传递给我的提交脚本,PHP var dump 看起来像这样:

array(1) { ["sku"]=> array(2) { ["'901257'"]=> array(3) { ["'1'"]=> string(0) "" ["'2'"]=> string(0) "" ["'3'"]=> string(0) "" } ["'901253'"]=> array(2) { ["'1'"]=> string(0) "" ["'2'"]=> string(0) "" } } } 

很好 - 我可以处理好,不用担心并继续。

问题是我想使用 Jquery AJAX 技术将此数据传递到我的提交脚本。请注意,数组名称总是会有所不同 - 所以我不能在 JS 中对任何数组名称进行硬编码。我已经尝试通过 class 定位表单字段,到目前为止这似乎效果最好但是对于我来说我似乎无法 Jquery 将数据传递到我的 PHP 提交脚本采用 PHP 可作为数组远程读取的格式。

有什么想法吗??

这是我的 Jquery 到目前为止:

    $('#add_licence_numbers').submit(function(){
    var action = $(this).attr('action');

    $.post(action, {
        // sku: $('#sku').val(), // this works for a targeted field by ID
        // sku: $('.sku').val(), // by classname

        // need to run some sort of loop here to pull in the POST and resend it on to PHP

    },
        function(data)
        {
            $('#add_licence_numbers #submit').attr('disabled','');
            $('.response').remove();
            $('#add_licence_numbers').before('<div class="response">'+data+'</div>');
            $('.response').slideDown();
            if(data=='processed')
            {
                $('#add_licence_numbers').slideUp();
                window.location.href = "http://submissiondomain.com/quote/review/";
            }           
        }
    );
    return false;
}); 

只是做一个连载?

$.post( "url" , $("#formID").serialize(), function(data) {});

这将获取您所有的表单数据并将其以可读格式传回给 php。

使用serialize()将表单数据转换为有效的查询字符串:

$('#add_licence_numbers').submit(function(e){
    e.preventDefault();
    var $form = $(this);
    $.post($form.prop('action'), $form.serialize(), function(data) {
        // rest of your code..
    });
});