Php 通过jqueryajax调用获取数组';行不通

Php 通过jqueryajax调用获取数组';行不通,php,jquery,ajax,Php,Jquery,Ajax,我有以下代码: var data = $(this).sortable('serialize'); $.ajax({ data: {order: data, actionFor: 'main_articles'}, type: 'POST', url: 'updateDisplayOrder.php', success: functio

我有以下代码:

 var data = $(this).sortable('serialize');
$.ajax({
                    data: {order: data, actionFor: 'main_articles'},
                    type: 'POST',
                    url: 'updateDisplayOrder.php',
                    success: function (msg) { //re-number the rows from 1 to n
                       //code goes here
                    },
                    error: function () {
                        alert("An error occurred");
                    });
而PHP:

    require_once('../lib/common/db_connect.php');
    $ids = array();
    $actionFor = $_POST['actionFor'];
    foreach ($_POST['order'] as $value) //error here {
    //more code goes here
    }
问题是我在foreach行上得到了这个错误:

警告:为foreach()提供的参数无效

我注意到,如果我更改这一行:

 data: {order: data, actionFor: 'main_articles'}, 

在PHP中:

foreach ($_POST['order'] as $value) //error here {

它工作得很好。
为什么?我怎样才能把它变成狐狸?谢谢

$\u POST['order']
包含字符串,而不是数组。首先需要将字符串解析为数组。试试这个:

$order = array();
$stg1 = explode("&", $_POST['order']);
$i = 0;
foreach($stg1 as $keyval) {
    list($key, $val) = explode("=", $keyval);
    $order[$i++] = $val;
}

然后,您可以根据需要执行您的
foreach($order as$value)

您的POST参数将是一个字符串;如果该字符串实际上是JSON,那么在尝试使用
foreach
对其进行迭代之前,需要将其解析为一个数组?@Styphon我得到了这个:'string(35)“item[]=2和item[]=1和item[]=3和item[]=4”@NaveTseva我们会找到你的答案的。它不是数组,而是字符串。正如Anthony Grist所说,您需要首先将其解析为一个数组。@Styphon是的,我现在注意到了,您能再看看这个问题吗?我更新了它,我觉得很奇怪,它是一个字符串
foreach ($_POST['item'] as $value)
$order = array();
$stg1 = explode("&", $_POST['order']);
$i = 0;
foreach($stg1 as $keyval) {
    list($key, $val) = explode("=", $keyval);
    $order[$i++] = $val;
}