2013-05-16 88 views
2

我試圖從Knockout.js傳遞JSON編碼數據到我的控制器中的一個動作,但它不工作並顯示爲空。從cakephp檢索URL中的控制器中的JSON數據

我在一個非蛋糕的php文件中使用了相同的腳本,它的工作完美。有蛋糕解碼JSON數據的特殊方法嗎?說這是傳遞的URL。

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

這裏是行動

//OrdersController 

function submit_order($order = null){ 
    $order = json_decode($order, true); 
    print_r($order); 
    //I also tried commenting out the json decode to simply pass the info without further processing but that just displayed "t" 

} 

是否有使用CakePHP來處理這種特殊的方式?隨着標準的PHP文件你可以設置類似

page.php?order=....json data 

然後用

$order = $_GET['order']; 

回答

1

訪問它也許嘗試通過POST而不是GET發送的數據? URL中的數組符號可能沒有被正確轉義。

+0

,但我有一些問題。我做了一個帖子[這裏](http://stackoverflow.com/questions/16600426/post-data-from-knockout-js-to-cakephp-controller)介意看看? – user1443519

0

您是否試過將數據作爲普通查詢字符串發送,然後像訪問控制器中的任何普通字符串一樣訪問它?

檢出jQuery.param()它應該允許您將json對象轉換爲查詢字符串。下面是從頁的例子:

var myObject = { 
    a: { 
    one: 1, 
    two: 2, 
    three: 3 
    }, 
    b: [1,2,3] 
}; 
var recursiveEncoded = $.param(myObject); 
var recursiveDecoded = decodeURIComponent($.param(myObject)); 

alert(recursiveEncoded); 
alert(recursiveDecoded); 

和結果(分別爲每個函數調用):我試圖做到這一點

a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3 
a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3 
+0

我該如何解碼值,因爲我從我的CakePHP控制器中檢索它,而不是在JavaScript中? – user1443519