0

我正在构建一个进程,其中 js 对象通过 ajax(POST 和 json 类型)提交到 php 文件,并且在迭代 php 中提交的内容时遇到问题。

我的对象如下所示:

var myObject = {
  "section1":{
  "subitem1":"value1",
  "subitem2":"value2"
 },
  "section2":{
  "subitem3":"value3",
  "subitem4":"value4"
 }
}

我的 ajax 看起来像这样:

$.ajax({
url:"test.php?section=section2",
type:"POST",
dataType:"json",
success:function(data){
// what i do with the response data
},
data:myObject
});

这是我的php:

$section = $_GET['section'];
$json = json_decode($_POST[$section], true);

foreach($json as $key=>$value){
   //if this iteration works here, it'll be the happiest point of my day
}

现在,在上面的 php 中,如果我将某个部分称为 $_POST['section2'],那么迭代确实有效。所以使用 PHP 的 variables 变量似乎是个问题,但我不知道....整个 $_POST 似乎也作为一个对象出现。JQUERY AJAX 会自动对我提交的对象执行 JSON.stringify 吗?我试过使用 stringify 但它没有用..我有最新版本的 chrome ......

另外,我也尝试在 $_POST 上使用 json_decode ......仍然 $_POST[$section] 被解释为空......

非常感谢任何帮助,建议,建议!

4

2 回答 2

2

这与您的想法不同,将对象字符串化并将其作为键/值对的一部分发送,然后从 post 字段中对其进行解码。

$.ajax({
    url:"test.php?section=section2",
    type:"POST",
    dataType:"json",
    success:function(data){
    // what i do with the response data
    },
    data:{json:JSON.stringify(myObject)}
});    
$section = $_GET['section'];
$json = json_decode($_POST['json']);
$current_section = $json->{$section};

foreach($current_section as $key=>$value){
   //if this iteration works here, it'll be the happiest point of my day
}
于 2012-08-28T23:06:26.927 回答
0

假设 $_POST 数组只有一个值——对象——试试这个:

$section = $_GET['section'];
$tmpArray = json_decode(array_pop($_POST), true);
$json = $tmpArray[$section];
于 2012-08-28T23:01:54.613 回答