2010-08-25 97 views
4

我對Ajax/Jquery有點新鮮,所以如果這是一個簡單的問題,我很抱歉,但我無法弄清楚。使用JQuery格式化數據以發佈到CakePHP控制器

我正在使用CakePHP和JQuery。

我想通過從HTML頁面中拉出「innerHTML」來將鏈接,標籤和說明保存到表中。我似乎無法將數據置於預期的格式 - 這是控制器預期的格式。

我拉從HTML數據時,HTML是這樣的:

<div class="listing"> 
<ul> 
    <li class="link">www.yahoo.com</li> 
    <li class="label">Yahoo</li> 
    <li class="description">This is Yahoo's home page</li> 
    </ul> 
</div> 
... 

我可以解析HTML拿到我的「鏈接」,「標籤」和「說明」。

但是,當我將數據發佈到控制器時,我無法弄清楚如何獲取預期格式的數據。

數據拉動到變量用JavaScript(JQuery的)後,我後使用下面的JQuery函數它:

$.post("/links/save", {link: link, label: label, notes: description}); 

當數據訊息至所述控制器,所述數據的格式是:

(
    [form] => Array 
    (
    [link] => www.yahoo.com 
    [label] => Yahoo 
    [description] => This is Yahoo's home page 
) 
) 

控制器期望數據的格式爲:

(
    [data] => Array 
    (
    [Link] => Array 
    (
     [link] => www.yahoo.com 
     [label] => Yahoo 
     [description] => This is Yahoo's home page 
    ) 
) 
) 

我知道我可以將數據照原樣放入控制器中並以正確的格式存儲,但似乎沒有必要。

有人可以告訴我如何操縱JQuery中的數據,以便它發佈控制器期望它?

回答

1

目前仍然在PHP CakePHP的,所以你可以簡單地使用$_POST

這可能是更方便的堅持,雖然蛋糕的數據結構,因此要獲得$this->data自動填充您必須格式化數據是這樣的:

{ data : { ModelName : { link : ..., ... } } } 
+0

這更多的是我之後的,但它不起作用。當我嘗試這種格式時,我將[object Object]看作發佈的數據。 有什麼建議嗎? – user429511 2010-08-25 02:08:38

+0

@andy啊,對不起,我無法確定jQuery是如何將這些序列化的。不確定像'$ .serializeArray()'這樣的函數是否有幫助。最糟糕的情況下,你應該能夠像這樣構建正確的格式:'{'data [Model] [link]':...,...}' – deceze 2010-08-25 02:30:50

+0

這樣做!謝謝! – user429511 2010-08-26 02:14:00

0

它是$ this-> params ['form']你在追求什麼?

http://book.cakephp.org/view/55/The-Parameters-Attribute-params

+0

感謝本。 $ this-> params ['form']可以工作,儘管我的「save」函數大多使用$ this-> data變量。 僅供參考 - 我有一個標準的「保存」形式,允許用戶手動輸入數據。我也有另外一種保存數據的方法,所以我不想爲這個ajax方法專門編寫代碼 – user429511 2010-08-25 02:10:55

相關問題