Php 使用jqueryajax的后关联数组

Php 使用jqueryajax的后关联数组,php,javascript,jquery,ajax,cakephp,Php,Javascript,Jquery,Ajax,Cakephp,我正在使用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]">

我正在使用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();
});

谢谢

您可以使用
.serializeArray()
然后手动编码值:

var values = form.serializeArray();
for (var i = 0; i < values.length; i++)
    values[i] = encodeURIComponent(values[i].value);
values = values.join('&');
var values=form.serializeArray();
对于(变量i=0;i
您可以使用
.serializeArray()
然后手动编码值:

var values = form.serializeArray();
for (var i = 0; i < values.length; i++)
    values[i] = encodeURIComponent(values[i].value);
values = values.join('&');
var values=form.serializeArray();
对于(变量i=0;i
一个可能的解决方案是在服务器端解析键字符串并用PHP构建关联数组…

一个可能的解决方案是在服务器端解析键字符串并用PHP构建关联数组…

我想这就是您要找的。

我想这就是您要找的。

无需使用低级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   
      });

   });  

});
您使用jquery请求POST ASSOC数组, 你会明白的

在php脚本中:

<?php

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

无需使用低级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   
      });

   });  

});
您使用jquery请求POST ASSOC数组, 你会明白的

在php脚本中:

<?php

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

序列化数组();是您正在寻找的

序列化数组();是您正在寻找的

请发布ajax代码。在jQuery中,使用这些名称作为输入元素将无法执行相同的操作。但是您可以通过适当地更改名称来实现它。jQuery部分被添加到问题中。您使用的是哪个版本的jQuery?尝试升级到最新版本(如果可能的话),您是否可以发布ajax代码?在jQuery中,使用这些名称作为输入元素,您将无法执行相同的操作。但是您可以通过适当地更改名称来实现它。jQuery部分被添加到问题中。您使用的是哪个版本的jQuery?尝试升级到最新版本(如果可能)