我正在为我的应用程序使用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'];
}
如何获取控制器中的整个值并保存。或者有任何方法可以检索吗?
答案 0 :(得分:0)
$ .ajax调用的 data 参数采用以下格式的字符串:
param1=val1¶m2=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']
访问该属性,或将其传递给保存功能,即实际用途。