JQuery表单提交和CakePHP控制器

时间:2009-06-24 03:56:17

标签: jquery cakephp cakephp-1.2

我正在为我的应用程序使用CakePHP和jQuery。

我的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

但是当我发布这个值并在控制器中退出时它只显示_method=POST..

我的控制器代码就像,

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

如何获取控制器中的整个值并保存。或者有任何方法可以检索吗?

2 个答案:

答案 0 :(得分:0)

$ .ajax调用的 data 参数采用以下格式的字符串:

param1=val1&param2=val2

现在,您已经使用$(“form”)生成了这种格式的字符串.serialize();所以分配它的正确方法是这样的:

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

然后,您的控制器可以检查$ _POST数组以查找您要查找的参数。

或者将POST'ed参数打印为查询字符串:

echo http_build_query($_POST);

答案 1 :(得分:0)

我不知道它是否与您的问题有关(虽然知道Cake,但是很有可能),但这不是从Cake中的表单传递数据的正确方法。你应该做的是使用data[key]作为关键。 Cake将采用此方法并从中构建一个名为$this->data的数组。如果您使用FormHelper构建HTML表单,它会自动将name属性设置为data[Model][attribute],您可以使用$this->data['Model']['attribute']访问该属性,或将其传递给保存功能,即实际用途。