2009-06-24 13 views
0

私のアプリケーションにはCakePHPとjQueryが使用されています。機能を提出するクリック内側のアラートがentrieの事などを表示しますが... _method=POST&name=aJQueryフォーム提出とCakePHPコントローラ

$(document).ready(function(){ 
    var str,fields; 
    function showValues() { 
     str = $("form").serialize(); 
     $("#results").text(str); 
    } 
    $("input").change(showValues); 
    showValues(); 
    $(".submit").click(function(){ 
     alert(str); 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
      data: "str="+str, 

      success: function(msg){ 
       alert("Data Saved: " + msg); 
      } 
     });//ajax 
     return false; 
    });//submit click 
});//ready 

しかし、私はコントローラで、この値を投稿し、それをretireveときに表示する:

私のjQueryのコードがあります唯一_method=POST..

私のコントローラのコードは次のようである、

function submit1($id = null) { 
    echo "in ctrller ".$_POST['str']; 
} 

コントローラ内の値全体を取得して保存する方法。または、取り出す方法はありますか?

答えて

0

$アヤックスコール用データパラメータは、この形式の文字列を取ります。

param1=val1&param2=val2 

、あなたはすでに$(「フォーム」)を使用して、この形式の文字列を生成しているシリアライズ(。 );ので、それを割り当てるための正しい方法は、このようなものです:

$.ajax({ 
    type: "POST", 
    url: "http://localhost/cake_1.2.1.8004/index.php/results/submit1", 
    data: str 
    }) 

あなたのコントローラは、あなたが探しているパラメータの$ _POST配列を検査することができます。

やクエリ文字列としてPOST'ed paramsは印刷:それは(ケーキを知っているものの、良いチャンスがあります)あなたの問題に関連していた場合、私は知らない

echo http_build_query($_POST); 
+0

こんにちは、エコーhttp_build_str($ _ POST)が動作していません...お勧めします... – useranon

+0

申し訳ありませんが、corerct関数はhttp_build_queryです – duckyflip

0

を、それは適切な方法ではありませんCakeのフォームからデータを渡す。何をすべきかは、data[key]をキーとして使用することです。 Cakeはこれを受け取り、$this->dataという配列を作成します。 FormHelperを使用してHTMLフォームを作成すると、name属性がdata[Model][attribute]に自動的に設定されます。この属性は$this->data['Model']['attribute']を使用してアクセスするか、実際に使用する保存機能に渡します。