通过jQuery AJAX将HTML数组传递给PHP

时间:2014-01-13 23:10:46

标签: javascript php jquery ajax

在使用HTML表单和jQuery AJAX时,我遇到了一个可能非常常见的问题,但我还没有找到适合我特定需求的正确解决方案......我正在使用Codeigniter Framework。 具体情况如下:

HTML - 带有数组的表单,地址[],如:

<form id="addressForm" class="form-horizontal" method="post" action="">    
<div class="form-group">
    <div class="col-lg-9">
        <label class="control-label" for="address[name]">Full name</label>
        <input name="address[name]" type="text" placeholder="" class="form-control">
    </div>
    <div class="col-lg-3">
        <label class="control-label" for="address[email]">Email</label>
       <input name="address[email]" type="text" placeholder="" class="form-control">
    </div>
    </div>
... and so on

jQuery - AJAX调用将两个参数传递给PHP:一个ID和地址数组序列化......

$.ajax({
    type: "post",
    url: "ajax/updateClientAddress",
    dataType: "json",
    data: {
    id: $('select[name="addresses"]').val(),
        address: $("[name^='address[']").serialize(),
    }
...

PHP - 数据处理和客户端更新

...
 $addressID = $this -> input -> post('id');   // Correctly received
 $addressData = $this -> input -> post('address');
...

我想知道在PHP中访问数据的每个部分缺少什么或者错误:

$client -> name = $addressData['name'];

提前致谢。

1 个答案:

答案 0 :(得分:3)

您需要将id名称/值对添加到地址参数字符串中,并将完成的参数字符串作为数据传递。

data: $.param({id: $('select[name="addresses"]').val()}) + "&" + $("[name^='address[']").serialize(),