后关联数组使用jquery ajax
问题描述:
我使用cakephp窗体创建窗体。它是建立形式是这样的:后关联数组使用jquery ajax
<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中构建相关数组...
请问你可以发布ajax代码 – Khaleel
你将无法在jQuery中对输入元素使用这些名称。但是,您可以通过正确更改名称来实现它。 – Diode
jQuery部分被添加到问题中。 –