我有以下jQuery代码:
function saveSchedule()
{
var events = [];
$('ul#schedule-list').children().each(function() {
events.push($(this).attr('value'));
});
jQuery.each(events, function()
{
alert(this);
});
$.post("schedule_service.php?action=save_schedule",
{ events: events, studentid: $('#student').val() },
function(data) {
alert(data);
}, 'json');
}
从我的页面上的列表中获取所有'值',并将它们放入事件数组中。
然后,在下面我将该数组加上一个studentid传入我的$ .post调用的数据部分。
然而,当我在PHP端收到这个数组时,它似乎是一个奇异的值:
<?php
include_once('JSON.php');
$json = new Services_JSON();
if ($_GET['action'] == 'save_schedule')
{
$event_list = $_POST['events'];
echo $json->encode($event_list);
exit;
}
?>
(注意:我使用的是旧版本的PHP,因此使用的是JSON.php库。)
现在,所有这些返回的都是“14”,这是事件数组中的最后一个事件。
发布:
响应:
我如何处理在$ .post中传递数组错误?
答案 0 :(得分:8)
看起来很傻,但试试这个:
$.post("schedule_service.php?action=save_schedule",
{ 'events[]': events, studentid: $('#student').val() },
function(data) {
alert(data);
}, 'json');
PHP会自动将密钥名events[]
解析为php中的实际数组...
答案 1 :(得分:0)
您可以将数组元素作为包含由字符连接的所有元素的字符串传递。然后你可以在PHP代码中拆分数组并在那里提取值。
使用 join() 加入数组元素。
加入(分离器);
分隔符:
指定用于分隔每个字符串的字符串 数组的元素。分隔符是 必要时转换为字符串。如果 省略,数组元素是 用逗号分隔。
在PHP端使用 explode() 将** join()** ed字符串重新组合在一起。
答案 2 :(得分:0)
为什么不使用JSON?将JavaScript数组作为JSON对象传递,并在PHP中解析它。
答案 3 :(得分:0)
信不信由你,只需在'events[]': events
请求中使用$.post
而不是events: events
(不带括号)。