1

嗨,我真的是 YII 的新手,请帮我解决一个简单的问题。我正在尝试将一些值从 js 传递给操作,然后将它们放入数据库中。我从教程中获得的大部分代码

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');

            }
    });

但我收到一个“错误”警报,没有任何东西进入数据库。

4

1 回答 1

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正确填充数组。所以真的不需要。

此外,如果您还没有在 Chrome 或 Firefox 上安装 Firebug,那么您可以在控制台中看到实际的 ajax 调用。查看您从控制器中的操作函数中得到什么错误。

于 2013-11-20T14:44:55.080 回答