Yii2使用pjax填充下拉列表

时间:2017-05-31 02:13:04

标签: yii2-advanced-app

我已经在这里更新了我的问题。 pjax现在正在工作并重新加载特定的容器,但模式并没有关闭。我不知道问题是什么。有人能帮助我吗?

modal.php

$this->registerJs(
'jQuery(document).ready(function($){
$(document).ready(function () {
    $("body").on("beforeSubmit", "form#form-person", function () {
        var form = $(this);
        if (form.find(".has-error").length) 
        {
            return false;
        }
        $.ajax({
            url    : form.attr("action"),
            type   : "post",
            data   : form.serialize(),
            success: function (response) 
            {
                $("#modalOfficials").modal("toggle");
                $.pjax.reload({container:"#for_from"}); //for pjax update
            },
            error  : function () 
            {
                console.log("internal server error");
            }
        });
        return false;
     });
    });
});');
?>

<div class="name-form">
<?php yii\widgets\Pjax::begin(['id' => 'sign-up']) ?>
<?php $form = ActiveForm::begin(['id' => 'form-person', 'options' => ['data-pjax' => true]]); ?>
<?= $form->field($model, 'position')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'fname')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'mname')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'lname')->textInput(['maxlength' => true]) ?>

<div class="form-group">
    <?= Html::submitButton($model->isNewRecord ? 'Add' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary', 'style' => 'width: 100%; padding: 10px 30px;']) ?>
</div>  
<?php ActiveForm::end(); ?>
<?php yii\widgets\Pjax::end() ?>

2 个答案:

答案 0 :(得分:0)

我已经解决了自己的问题!代码是正确的。代码没有问题。但是,由于两个jquery库的冲突,它不起作用。有人可以给我一个如何解决它的想法吗?

答案 1 :(得分:0)

如果要使用jquery运行ajax jquery,则不需要pjax。只需在成功时更新select元素即可。

success: function (response) 
            {
            var myOptions = response.data
            $.each(myOptions, function(val, text) {
            $('#select').append(
                $('<option></option>').val(val).html(text)
           );
});              
            }