【问题标题】:JQuery form submission and CakePHP controllerJQuery 表单提交和 CakePHP 控制器
【发布时间】:2009-06-24 03:56:17
【问题描述】:

我正在为我的应用程序使用 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 

虽然点击提交功能内的警报会显示条目,例如.._method=POST&name=a

但是当我发布这个值并在控制器中将其收回时,它只显示_method=POST..

我的控制器代码是这样的,

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

如何获取控制器中的全部值并保存。或者有什么方法可以找回?

【问题讨论】:

    标签: jquery cakephp cakephp-1.2


    【解决方案1】:

    $.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 的参数打印为查询字符串:

    echo http_build_query($_POST);
    

    【讨论】:

    • 抱歉corerct函数是http_build_query
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多