使用CakePHP通过URL访问JSON数据时遇到问题

时间:2013-05-18 18:51:48

标签: php json cakephp knockout.js

我将数据从knockout.js表单传递给CakePHP中的控制器,但我对如何访问数据感到困惑。

正在传递网址

orders/submit_order/%7B"orderInfo":[%7B"itemNumber":"1","quantity":"1","price":1.00,"productName":"Test Product"%7D]%7D

在我的控制器中,我尝试在解码后简单地回显URL,但每次都是空的。我调试并发现它显示为命名参数

function submit_order($order = null){
    $this->layout = false;
    $this->autoRender = false;
    $order = json_decode($order, true);
    $print_r($order); //shows null
    debug($this->params);

    //$order_2 = json_decode($this->request->params['named'], true); //says that a string is required, array given
    $order_2 = $this->request->params['named'];
    print_r($order_2);
    echo $order_2['orderInfo'][0]['itemNumber'];
}

debug语句返回以下内容

object(CakeRequest) {
params => array(
    'plugin' => null,
    'controller' => 'orders',
    'action' => 'submit_order',
    'named' => array(
        '{"orderInfo"' => '[{"itemNumber":"1","quantity":"1","price":1.00,"productName":"Test Product"}]}'
    ),
    'pass' => array()
)

当我打印$ order_2时,显示以下内容。

Array ( [{"orderInfo"] => [{"itemNumber":"1","quantity":"1","price":1.00,"productName":"Test Product"}]} )

我可能错了,但是支架/支架放置似乎很奇怪。

当我尝试回显itemnumber时,它给出了一个错误,指出它是一个未定义的索引。然后我注意到它并不像一个数组那样逐行交错。

如何访问此数据?

0 个答案:

没有答案