如图,我用传统表单写前台:
<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’, 中间那个-是不是多余了