嗨,我是YII的新手,请帮我解决一个简单的问题。 我正在尝试将一些值从js传递给action然后将它们放入数据库中。 我从教程
获得了大部分代码public function actionInsert(){
$post = file_get_contents("php://input");
$data = CJSON::decode($post, true);
$read = new Read();
$read->attributes = $data;
$response = array();
$read->save();
}
然后我发送:
$.ajax({
type: "POST",
url: "/read/insert/",
data: "name=imja&short_desc=korotkoe&author=avtor&image=photo",
error: function (){
alert('Error');
},
success: function(data){
alert('success');
}
});
但是我得到了一个'错误'警告,没有任何内容发送给DB。
答案 0 :(得分:0)
.ajax中的值不会作为JSON数组提交,值应该只在$_POST
数组中。我也喜欢回复“完整”之类的东西。尝试将代码更改为:
public function actionInsert(){
$read = new Read();
$read->attributes = $_POST;
$response = array();
$read->save();
echo 'complete';
die();
}
或者您可以从javascript端将其作为JSON数组发送:
var data = {
name: 'imja',
short_desc: 'korotkoe',
author: 'avtor',
image: 'photo'
};
$.ajax({
type: "POST",
url: "/read/insert/",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
error: function (){
alert('Error');
},
success: function(data){
alert('success');
}
});
但是即使你这样做,apache也会看到标题类型并仍然正确地填充$_POST
数组。所以真的不需要。
此外,如果您还没有将Firebug安装到Chrome或Firefox上,那么您可以在控制台中看到实际的ajax调用。查看您从控制器中的操作功能获得的错误。