Как создать функцию onjlick ajax в prestashop (1.7) и создать правильную ссылку - PullRequest
0 голосов
/ 18 апреля 2019

Я создал ссылку ajax в javasctript, и я ожидаю, что ссылка будет реализована, она обратилась к файлу ajax_[modulename].php в фоновом режиме, но адрес URL игнорируется, и основной адрес вставляется в модуль. Я не знаю, что вызывает это. Пожалуйста, помогите.

Я создал код javascript в файле .... tpl, как показано ниже. Затем я добавил файл ajax_[modulename].php, который я поместил в каталог основного модуля

Ожидаемый эффект - отображение сообщений, подтверждающих, что эта часть работает правильно.

К сожалению, это не делается в фоновом режиме, и возвращаемая ссылка является основной ссылкой модуля.

Сайт перезагружается и выполняется ссылка "index.php? Controller = AdminModules & token = 3213789e146f56adaa445b96bb79956f & configure = dpeasye & module_name = dpeasy & List".

Файл - display_list.tpl

<td class="text-right">
    <div class="btn-group-action pull-right">
        <a class="btn btn-outline-info" href=".../index.php?controller=AdminModules&token=3213789e146f56adaa445b96bb79956f&configure=dpeasye&module_name=dpeasye&id_field=47&ListDic=mg">
          <i class="icon-layer"></i>
              Display Sub
        </a>
        <a class="btn btn-outline-info" href=".../index.php?controller=AdminModules&token=3213789e146f56adaa445b96bb79956f&configure=dpeasye&module_name=dpeasye&id_field=47&UpdateDic=mg">
          <i class="icon-edit"></i>
              Edytuj
        </a>
        <a class="btn btn-outline-info" href=".../index.php?controller=AdminModules&token=3213789e146f56adaa445b96bb79956f&configure=dpeasye&module_name=dpeasye&id_field=47&DeleteDic=mg">
          <i class="icon-trash"></i>
              Delete
        </a>
        <a id="active-47" class="btn btn-success ajax-status" href=" " title="Enabled">
            <i class="icon-check"></i>
             Enabled
        </a>
    </div>
</td>
<td class="text-right">
    <div class="btn-group-action pull-right">
        <a class="btn btn-outline-info" href=".../index.php?controller=AdminModules&token=3213789e146f56adaa445b96bb79956f&configure=dpeasye&module_name=dpeasye&id_field=65&ListDic=tt">
          <i class="icon-layer"></i>
              Display Sub
        </a>
        <a class="btn btn-outline-info" href=".../index.php?controller=AdminModules&token=3213789e146f56adaa445b96bb79956f&configure=dpeasye&module_name=dpeasye&id_field=65&UpdateDic=tt">
          <i class="icon-edit"></i>
              Edytuj
        </a>
        <a class="btn btn-outline-info" href=".../index.php?controller=AdminModules&token=3213789e146f56adaa445b96bb79956f&configure=dpeasye&module_name=dpeasye&id_field=65&DeleteDic=tt">
          <i class="icon-trash"></i>
              Delete
        </a>
        <a id="active-65" class="btn btn-success ajax-status" href=" " title="Enabled">
            <i class="icon-check"></i>
            Enabled
        </a>
    </div>
</td>

Файл - display_list.tpl

<script type="text/javascript">

$('a.ajax-status').click(function() {
    var MainUrl = "";
    var abtn = $(this);
    var aidall = $(this).attr('id');
    var aid = $(this).attr('id').replace('active-', '');
    var aclass = $(this).attr('class').split(' ');
    var atitle = $(this).attr('title');
    var atext = $(this).text();
        atext = atext.replace('\n', '');
    var iclass = $(this).children().attr('class');
    var data = '&id_field=' + aid ;

     $.ajax({
        url: baseDir + 'modules/dpeasye/ajax_dpeasye.php?action=changeStatus',
        type: 'POST',
        data: data,
        cache: false,
        dataType: "JSON",
        success: function(aid){

            if (aclass.class[2] == 'btn-danger'){
                abtn.fadeOut(700);
                atext.replace('Enabled','Disabled');
                aclass[2].replace('btn-success','btn-danger');
                atitle.replace('Enabled','Disabled');
                iclass.replace('icon-check','icon-remove');
                abtn.fadeIn(700);
            }
            if (aclass.class[2] == 'btn-danger'){
                abtn.fadeOut(700);
                atext.replace('Disabled','Enabled');
                aclass[2].replace('btn-danger','btn-success');
                atitle.replace('Disabled','Enabled');
                iclass.replace('icon-remove','icon-check');
                abtn.fadeIn(700);
            }
        showSuccessMessage(update_success_msg);
        },
        failure:function(aid){
            console.log('test ok');
        }
    });
});

</script>

Файл - ajax_dpeasye.php

include_once('../../config/config.inc.php');
include_once('../../init.php');
include_once('dpeasye.php');

if (isset($_GET['action'])) {
    switch ($_GET['action']) {
        case 'changeStatus':
            $this->displayConfirmation($this->trans('Test passed'));       
        break;
        case 'sort':
        break;
    }
} else {
    die('no action passed');
}

Почему появляется главная ссылка, если в ней нет ссылки: "<a id="active-65" class="btn btn-success ajax-status" href="" title="Enabled"> <i class = "icon -check "> </ i> Enabled </a>"?

По какой причине код javascript не выполняется?

...