2014-01-13 3 views
4

Я застрял в, вероятно, очень распространенной проблеме при работе с форматами HTML и jQuery AJAX, но я не нашел подходящего решения, которое еще больше соответствует моим конкретным потребностям ... Я используя Codeigniter Framework. Вот конкретная ситуация:Передача HTML-массива на PHP через jQuery AJAX

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']; 

Спасибо заранее.

ответ

3

вам необходимо добавить пару id/value id в строку param парада и передать эту завершенную строку параметров в качестве данных.

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

Это было именно то, что мне было нужно. Большое спасибо. – andcl

Смежные вопросы