Yii2 ActiveForm組件的ajax提交


ActiveForm如何異步提交?

1.首先在views層的ActiveForm中配置以下屬性

$form = ActiveForm::begin([
    'action' => Url::to(['post/save']),           //此處為請求地址 Url用法查看手冊
    'enableAjaxValidation' => true,
        'validationUrl' => Url::to(['post/validate']),     //數據異步校驗
]);

2.配置好表單屬性之后,在控制器中添加對應的方法

validateUrl對應的方法

//該方法是異步校驗字段,輸入框失去焦點之后自動會自動請求改地址
public function actionValidate(){
    $model = new PostModel();
    if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {        
        Yii::$app->response->format = Response::FORMAT_JSON;        
        return ActiveForm::validate($model);
    }
}

action對應的方法

 

//該方法是數據保存方法
public function actionSave()
{
    $model = new PostCatModel();
    if ($model->load(Yii::$app->request->post())) {
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ['status' => $model->save()];
    }        
}

除此之外,還要寫一段提交的js

//此處點擊按鈕提交數據的jquery
$('.btn').click(function () {
$.ajax({
        url: "/post/save.html",
        type: "POST",
        dataType: "json",
        data: $('form').serialize(),
        success: function(Data) {
            if(Data.status)
                alert('保存成功');
          else
            alert('保存失敗')
        },
        error: function() {
            alert('網絡錯誤!');
        }
    });
    return false;
});

注:actionSave中對應的命名空間要加上,否則會報錯

比如 Response 和 ActiveForm 

 

use yii\web\Response;
use yii\bootstrap\ActiveForm;

上面就是ActiveForm對應的異步提交方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM