0

我在我的应用程序中使用 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'];
}

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

4

2 回答 2

0

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

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);
于 2009-06-24T08:11:06.287 回答
0

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

于 2010-08-01T17:20:46.620 回答