2009-06-24 58 views
0

我正在爲我的應用程序使用CakePHP和jQuery。JQuery表單提交和CakePHP控制器

我jQuery代碼是:

$(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 

雖然內提交功能的點擊警報顯示entrie東西如.. _method=POST&name=a

但是當我發佈這個值和retireve它在控制器的顯示只有_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 2009-06-25 04:39:04

0

如果它關係到你的問題(雖然知道蛋糕,有一個很好的機會),我不知道,但是這不是正確的方法從Cake中的表單傳遞數據。你應該做的是使用data[key]作爲關鍵。 Cake將採取這種做法,並從中構建一個名爲$this->data的數組。如果您使用FormHelper構建HTML表單,它將自動將name屬性設置爲data[Model][attribute],您可以使用$this->data['Model']['attribute']訪問該屬性或將其傳遞給保存功能,這是實際的預期用途。