Intereting Posts
Каковы хорошие ресурсы для изучения системы Zend? Как получить / установить session_id () или он должен быть сгенерирован автоматически? PHP. Внешний класс / библиотека доступен из apache, но не из phpunit «Предупреждение: mysql_query (): предоставленный аргумент не является допустимым MySQL-Link» – Почему? заменяя все теги src изображения в тексте HTML Есть ли у кого-нибудь рекомендации для хорошей (и легкой!) Библиотеки почтовых программ PHP? Как я могу переставить элементы массива, перемещая зависимости сверху? Разница в датах с php Как сгенерировать документ Excel с несколькими листами из PHP? Google App Engine Launcher выдает ошибку ascii-кодека при развертывании файла образа Можно ли проверить строку математического выражения? Ошибка OAuth Facebook: достигнут предел запроса приложения php: regex удалить скобку в строке Добавить значения в ассоциативный массив в PHP phpdocx добавляет изображение делает docx коррумпированным

пост-ассоциативный массив с использованием jquery ajax

Я создаю форму с использованием формы cakephp. Он создает форму примерно так:

<form name='license' action='/some/action' action='POST'> <input type="text" id="license0Number" name="data[license][0][number]"> <input type="text" id="license0Year" name="data[license][0][year]"> <input type="text" id="license1Number" name="data[license][1][number]"> <input type="text" id="license1Year" name="data[license][1][year]"> </form> 

Он отлично работает при отправке формы в обычной форме и получении данных примерно так:

 $data = array( 'license' => array( '0' => array( 'number'=>'123', 'year'=>'2000' ), '1' => array( 'number'=>'321', 'year'=>'2003' ) ); 

Но когда я отправляю ту же форму с помощью функции jQuery $.ajax() и отправляю данные с помощью функции serialize() . Я получаю данные примерно так на стороне сервера.

 Array ( [data%5Blicense%5D%5B0%5D%5Bnumber%5D] => 123 [data%5Blicense%5D%5B0%5D%5Byear%5D] => 2000 [data%5Blicense%5D%5B1%5D%5Bnumber%5D] => 321 [data%5Blicense%5D%5B1%5D%5Byear%5D] => 2003 ) 

Как я могу получить данные формы в форме ассоциированных массивов при использовании функции jQuery $ .ajax ()?

РЕДАКТИРОВАТЬ:

 $('#license_form').live( 'submit', function( event ) { var action = '/some/action'; var data = $(this).serialize(); $.ajax({ type: "POST", url: action, data: data, // form data success: function( result ) { alert( result ); }, error: function() { alert('error'); } }); event.preventDefault(); }); 

благодаря

Не нужно пользователю низкоуровневого ajax, вместо этого используйте сокращение $ .post.

Попробуй это:

 $(function(){ $("#submit").click(function(){ //Since you're talking about POST $.post('path_to_php_script.php', { "license0Number" : $("#license0Number").val(), "license0Year" : $("#license0Year").val(), "license1Number" : $("#license1Number").val(), "license1Year" : $("#license1Year").val() }, function(respond){ //Respond from PHP //Maybe replace some div with the server respond? $("#some_div").html(respond); //optional }); }); }); 

Вы спросили, что делать с POST ASSOC ARRAY. Используя jquery, вы получите это,

В вашем php-скрипте:

 <?php print_r($_POST); //will print what you want 

Вы можете использовать .serializeArray() а затем вручную закодировать значения:

 var values = form.serializeArray(); for (var i = 0; i < values.length; i++) values[i] = encodeURIComponent(values[i].value); values = values.join('&'); 

Одним из возможных решений является разбор ключевых строк на стороне сервера и сборка связанного массива в PHP …

Я думаю, что jQuery.param – это то, что вы ищете.

serializeArray (); это то, что вы ищете