Как удалить метод мультизапроса в yii2 - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь обновить данные в строке detailView, используя Kartik Editable в качестве встроенного редактирования, и я использую Kartik detailView. Поскольку данные не отправляются вручную, поэтому я отправляю данные через ajax с методом post , это мой view.php:

<?php
echo DetailView::widget([
    'model' => $model,
    'mode' => DetailView::MODE_VIEW,
    'attributes' => [
        [
            'attribute' => 'busFleetStatus',
            'format' => 'raw',
            'value' => Editable::widget([
                'model' => $model,
                'attribute' => 'busFleetStatus',
                'beforeInput' => function($form, $widget) {
                    echo $form->field($widget->model, 'busFleetStatus')->widget(\kartik\select2\Select2::classname(), [
                        'data' => ArrayHelper::map(SystemStatus::find()->where(['statusCode' => 'busFleetStatus'])->all(), 'systemStatusId', 'statusDetail'),
                    ])->label(false);
                },
                'afterInput' => function($form, $widget) {
                    echo $form->field($widget->model, 'busFleetStatus')->widget(\kartik\select2\Select2::classname(), [
                        'data' => ArrayHelper::map(SystemStatus::find()->where(['statusDetail' => 'busFleetStatus'])->all(), 'systemStatusId', 'statusDetail'),
                    ])->label(false);
                },
                'size' => 'lg',
                'header' => 'Bus Fleet Status',
                'displayValueConfig' => [
                    1 => 'Operating',
                    2 => 'Maintenance',
                    3 => 'Available',
                    4 => 'Booked',
                ],
                'placement' => 'right',                            
                'format' => Editable::FORMAT_LINK,
                'inputType' => Editable::INPUT_SELECT2,
                'showAjaxErrors' => false,
                'pluginOptions' => [
                ],
            ]),
        ],
    ],
])
?>   

а это мой аякс:

<?php
$url = Url::toRoute(['bus-fleet/view?id=' . $model->busFleetId]);
$key = $model->busFleetId;
$this->registerJs(<<< JS
$(document).ready(function () {
$('.kv-editable-submit').click(function() {               

    var key = '$key';
    var parAtt = $(".popover-title").clone()
        .children()
        .remove()
        .end()
        .text();               

    var preRep = parAtt.replace(/^\s+Edit /,"");

    var postRepF = preRep.replace(/\s+$/, "");

    var postRepS = postRepF.replace(/\s+/, "");        

    var upAtt = postRepS.replace(/\s+/, "");        

    var value = $("#select2-busfleet-busfleetstatus-container").text();

    var att = upAtt[0].toLowerCase() + upAtt.substring(1)

    $.ajax({     
        url: '$url',
        dataType: 'json',
        data:{hasEditable: 1, editableIndex: 0, editableKey: key, BusFleet: [{name: value, editableAttribute: att}]},
        type: 'post',
    });     
});
});
JS
);
?>

ajax успешно обновляет данные с помощью метода POST , но в то же время он показывает ошибка анализа json , поскольку также выполняется ручной метод GET . Таким образом, у меня есть два запроса в одно и то же время, когда я нажал кнопку enter image description here

Как мне удалить запрос метода GET? Мне нужен только запрос POST.

Заранее спасибо

1 Ответ

0 голосов
/ 19 апреля 2019

Полагаю, вы хотите предотвратить поведение по умолчанию .kv-editable-submit

$('.kv-editable-submit').click(function(event){
    event.stopPropagation();

    // your custom code goes here

    return false;        
}

также см. этот ответ о распространении событий для более подробного объяснения

...