2017-02-06 16:06:03 3524次浏览 8条回答 0 悬赏 10 金钱

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

<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,望大神指教,谢谢!

最佳答案

  • abei1982 发布于 2017-02-07 10:06 举报

    把输入代码放到一个action="javascript:;"的form里,对于$.post的data值,执行jquery的$('#Form').serializeArray(),提交的时候f12,看看浏览器到后台的数据,正常应该有form的每项被解析的。

    另外如果你用load方法,传到后台的值必须是Xxx[a],Xxx[b]这样的类型,是一个数组,不是一个一个值。

    觉得很赞
  • 回答于 2017-02-06 17:00 举报

    把你save的sql语句打印出来看一下就知道了

    1 条回复
    回复于 2017-02-06 17:15 回复

    打印sql语句的代码是什么?本人小白,不好意思

  • 回答于 2017-02-06 17:26 举报

    应该是验证没过;不要用$model->load()

    1 条回复
    回复于 2017-02-06 18:05 回复

    把表单load去掉和data:{'label_name':label_name,'sort':sort},改为data:{'label[label_name]':label_name,'label[sort]':sort},就可以通过,问题出现在load上,load的第二个参数设置为空就可以保存,这个是什么原因呢?

  • 回答于 2017-02-06 19:34 举报

    根本就没有load到数据,需要把 data:{'label_name':label_name,'sort':sort},改为 data:{'Label[label_name]':label_name,'Label[sort]':sort}

    1 条回复
    回复于 2017-02-06 20:07 回复

    是的,改了之后还是不能load到数据,如果这样写就能load导数据:$model->load(Yii::$app->request->post(), $formName =''),这是什么原因呢?

  • 回答于 2017-02-07 08:18 举报

    $model->load(Yii::$app->request->post(),'')这样写

  • 回答于 2017-02-07 09:26 举报

    传过去的数据格式不对。具体参考gii生成的代码。

  • 回答于 2017-02-07 14:00 举报

    你的form表单标签呢,post提交还要严重csrf,你没有验证

  • 回答于 2017-07-25 11:06 举报

    actionAddLabel 为啥提交地址是 url:'/sale/add-label', 中间那个-是不是多余了

您需要登录后才可以回答。登录 | 立即注册
haoshu0812
助理

haoshu0812

注册时间:2017-01-08
最后登录:2017-03-06
在线时长:2小时55分
  • 粉丝0
  • 金钱80
  • 威望0
  • 积分100

热门问题