JQUERY Ajax - 使用Array名称传递的POST数据

时间:2015-01-09 15:50:45

标签: php jquery arrays ajax post

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

<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中的任何数组名称。我已经尝试按类定位表单字段,这似乎到目前为止效果最好,但对于我的生活,我似乎无法让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;
}); 

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

只是做一个序列化?

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

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