谁一开始就是大神?

Ajax提交数据,后台写入数据库问题?[2.0]

如图,我用传统表单写前台:

<div class="input">
      <label>标签名称:</label>
      <input type="text" id="label_name" placeholder="请输入标签名称">
</div>
<div class="input">
      <label>排序:</label>
      <input type="text" id="sort" class="short"><span>数字越大,排在越前</span>
</div>
<script type="text/javascript">
$("#submit-btn").click(function(){
        var label_name  = $("#label_name").val();
        var sort        = $("#sort").val();
        $.ajax({
                url:'/sale/add-label',
                type:'post',
                data:{'label_name':label_name,'sort':sort},
                dataType:'json',
                success:function(data){

                },
                error:function(data){
                    //alert('错误');
                }
        });
})
</script>

后台里的actionAddLabel如下:

public function actionAddLabel() {
    $model = new Label();
    if ($model->load(Yii::$app->request->post())) {
        $model->save();
        echo '1';
    } else {
        print_r(Yii::$app->request->post());
        echo '0';
    }
}

前台提交后可以看到传过来的label_name和sorf的数据,但是没法写入到数据表里,请问要怎么修改?本人初学yii,望大神指教,谢谢!

把输入代码放到一个action=”javascript:;”的form里,对于$.post的data值,执行jquery的$(‘#Form’).serializeArray(),提交的时候f12,看看浏览器到后台的数据,正常应该有form的每项被解析的。
另外如果你用load方法,传到后台的值必须是Xxx[a],Xxx[b]这样的类型,是一个数组,不是一个一个值。
把你save的sql语句打印出来看一下就知道了
应该是验证没过;不要用$model->load()
根本就没有load到数据,需要把 data:{‘label_name’:label_name,’sort’:sort},改为 data:{‘Label[label_name]’:label_name,’Label[sort]’:sort}
$model->load(Yii::$app->request->post(),”)这样写
传过去的数据格式不对。具体参考gii生成的代码。
你的form表单标签呢,post提交还要严重csrf,你没有验证
actionAddLabel 为啥提交地址是 url:’/sale/add-label’, 中间那个-是不是多余了

赞(0) 打赏
未经允许不得转载:菜鸟之家 » Ajax提交数据,后台写入数据库问题?[2.0]

评论 抢沙发

登录

找回密码

注册