我在视图中有一个普通的表格。我没有使用活动表单,因为在某些情况下我使用了jquery子窗口,并且活动表单在appAsset中存在冲突。
<form id="technician-create-form" method="post">
<input type="hidden" name="csrf" id="csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
<div class="col-md-6">
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">Technician No:</label>
<div class="col-sm-8">
<input type="text" name="technician_no" id="technician_no" class="form-control" placeholder="">
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">Code:</label>
<div class="col-sm-8">
<input class="form-control" name="tech_code" id="tech_code">
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">Name:</label>
<div class="col-sm-8">
<input type="text" name="tech_name" id="tech_name" class="form-control" placeholder="">
</div>
</div>
</div>
</div>
<div class="col-sm-offset-4 col-sm-9">
<input type="button" value="Save" id="addTechnicians" class="saveNew" name="addNewTechnicians">
<button type="reset" class="btn btn-default">Reset</button>
</div>
</form>
jquery的
$(".saveNew").on("click",function(){
//console.log("ok");
var myBtn = this.name;
switch (myBtn){
case "addNewTechnicians":
console.log(myBtn);
var _csrf = $("#csrf").val();
var technicianNo = $("#technician_no").val(),
techCode = $("#tech_code").val(),
techName = $("#tech_name").val(),
$.ajax({
url: 'technicians/create',
type: 'post',
data:
{
_csrf : _csrf,
//_csrf : csrfToken,
technicianNo : technicianNo,
techCode : techCode,
techName : techName,
},
//dataType: json,
success: function(result){
var res = JSON.parse(result);
notificationMessage(res.technicians.notification,res.technicians.template);
if(res.technicians.template == "success"){
// $("#technician_no").val("");
// $("#tech_code").val("");
}
},
error: function(result){
console.log(result);
alert("error in ajax form submission");
},
});
break;
});
技术人员控制员:
public function actionCreate()
{
var_dump($_POST);
}
在控制器中,我转储$ _POST以检查ajax是否在控制器上成功传递但没有任何反应。这与csrf有关吗?因为这是我前一段时间的问题,但是现在,这个。
答案 0 :(得分:0)
你的问题是:
type: 'get',
将其设为
type: 'post',