转换Javascript关联对象并用PHP输出


Convert Javascript Associative Object and Output it in PHP

使用Javascript创建一个名为"basketItems"的关联对象。(类似于一个关联数组)然后我将"项目"对象添加到其中,这些对象包含特定的项目规范,如下所示:

// create main basketItems Object
var basketItems = new Object();
function createItem() {
    var item = new Object();
    item["number"] = number variable;     
    item["color"] = color variable;
    item["engine"] = engine variable;
    item["shape"] = shape variable;
    item["seats"] = seats variable;
    item["price"] = price variable;
    var itemUnique = unique variable;
    // Add Item into BasketItems Object
    basketItems[itemUnique] = item;
}

然后,我使用post将basketItems发送到服务器,在服务器端,我的PHP代码是:

<?php
$basketItems = $_POST['items'];
print $basketItems;
?>

这给了我一个完整的basketItems对象,并输出如下示例:

{ 546523 = { seats = '"FOUR'"; shape = '"HATCHBACK'"; price = '"6500'"; engine = '"TWO LITRE'"; color = '"ORANGE'"; number = '"36408974'"; }; }

不过,我需要能够调用basketItems对象的特定部分,而不仅仅是完整的内容。我已经尝试过多次使用下面的"foreach"语句,但我总是得到一个无效的foreach参数

<?php
$basketItems = $_POST['items'];
foreach($basketItems as $key => $item) {
print $item['shape'];
}
?>

我如何才能实现上述目标,以便我可以为basketItems对象中的所有项目选择"shape"值?

如果有人能帮我,我会非常感激。

提前感谢

---------------------快速更新--------------------

javascript都在Titanium Appcelerator中构建的移动应用程序中使用。我不是用JSON发布的,只是作为一个标准对象。邮件发送方式如下:

var xhr = Ti.Network.createHTTPClient();
xhr.open('POST', 'http://www.xxxxxx.com/xxxxxx.php');
xhr.onload = function () {webview.html = this.responseText;};
xhr.send({items:basketItems});

好吧,您的示例数据都是错误的。但如果您的输入是JSON,那么它将类似于:

[ { "seats": "FOUR", "shape": "HATCHBACK", "price": "6500", "engine": "TWO LITRE", "color": "ORANGE", "number": "36408974" } ]

请注意,同样的遍历也适用于实际的$_POST数组。它应该和你的foreach示例完全一样。

您显示的输入既不是。看起来有些magic_quotes阻碍了JSON,但我真的不确定。

否则,在尝试其他操作之前,请使用var_dump($_POST);查看实际接收到的结构,然后再对其进行循环。

这是一个JSON字符串吗?如果是,则表示格式不正确。

{546523={seats=''"FOURE''";shape=''"HATCH BACK''";price=''"6500''";engine=''"TWO LITRE''";color=''"ORANGE''",number=''"36408974''";};}

$basketItems的值是一个字符串,而不是数组。使用json_decodehttp://php.net/manual/en/function.json-decode.php解码JSON字符串,然后可以在数组上循环。

$basketItems=$_POST['items'];foreach($basketItems为$key=>$item){打印$item['sape'];}