yii ajax 表单验证,ajax - Yii2:ajax表单上的ajax表单验证 - 堆栈内存溢出

我找到了解决方案:

表格:

$form = ActiveForm::begin(['id' => 'form-add-contact', 'enableAjaxValidation' => true, 'validationUrl' => Yii::$app->urlManager->createUrl('contacts/contacts/contact-validate')]);

?>

通过Ajax提交:

$script = <<< JS

$(document).ready(function () {

$("#form-add-contact").on('beforeSubmit', function (event) {

event.preventDefault();

var form_data = new FormData($('#form-add-contact')[0]);

$.ajax({

url: $("#form-add-contact").attr('action'),

dataType: 'JSON',

cache: false,

contentType: false,

processData: false,

data: form_data, //$(this).serialize(),

type: 'post',

beforeSend: function() {

},

success: function(response){

toastr.success("",response.message);

},

complete: function() {

},

error: function (data) {

toastr.warning("","There may a error on uploading. Try again later");

}

});

return false;

});

});

JS;

$this->registerJs($script);

?>

控制器:

/*

* CREATE CONTACT FORM AJAX VALIDATION ACTION

*/

public function actionContactValidate() {

$model = new ContactsManagement();

if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {

$model->company_id = Yii::$app->user->identity->company_id;

$model->created_at = time();

\Yii::$app->response->format = Response::FORMAT_JSON;

return ActiveForm::validate($model);

}

}

/**

* Quick Add Contact Action

* @param type $id

* @return type

*/

public function actionAddContact() {

$model = new ContactsManagement();

if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {

$transaction = \Yii::$app->db->beginTransaction();

try {

if ($model->validate()) {

$flag = $model->save(false);

if ($flag == true) {

$transaction->commit();

return Json::encode(array( 'status' => 'success', 'type' => 'success', 'message' => 'Contact created successfully.'));

} else {

$transaction->rollBack();

}

} else {

return Json::encode(array('status' => 'warning', 'type' => 'warning', 'message' => 'Contact can not created.'));

}

} catch (Exception $ex) {

$transaction->rollBack();

}

}

return $this->renderAjax('_add_form', [

'model' => $model,

]);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值