Вызов метода класса с помощью ajax не работает - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть кнопка на html-странице, которая позволяет начать обновление данных для отображения в таблице.Это обновление запускается при событии click через вызов ajax.Вызов ajax работает нормально, за исключением того, что данные не были обновлены.Проведя небольшой тест на моем коде, я понял, что, если я запускаю метод моего класса, непосредственно перезагружая страницу, данные обновляются освежающе.Вот что я делаю:

<?php 
if(PermissionManager::isSuperAdmin()){

    require_once('controllers/RiTableController.php');

    if(isset($_POST['ri']) && $_POST['ri'] == "refresh"){
        RiTableController::refreshRIData();
    }

    ?>
    <script type="text/javascript" src="assets/js/ri_table.js" ></script>
    <script type="text/javascript" src="assets/js/datatables.min.js"></script>

    <script type="text/javascript">

        $(document).ready(function() {
            rendertable(<?php echo json_encode(RiTableController::getDataTableRi())?>);

        });

        function launch_ri() {
            $(".loading").css("display","block");

            $.ajax({
                type:'POST',
                //url:'ri_table_view.php',
                data:"ri=refresh", 
                success: function(data){
                    $(".loading").css("display","none");
                    alert('successful');
                    location.reload();
                }
            });
        };

 </script>

 <div class="row">
    <div class="col-md-6">
     <h1>IR list</h1>
     <h4 type="text" value="">IR tracking list of builds</h4>
 </div>
</div>
<div class="row" style="display: flex;align-items: center;margin-bottom:30px">
    <div class="col-md-2">
     <button type="button" id="launch_ri" name="launch_ri" onClick="launch_ri();" align="right" class="btn btn-default">Refresh List</button>
 </div>
</div>
<div class="row">
    <div class="col-md-12">
     <table style="font-size:12px" width="100%" id="table_RI" class="table table-condensed table-bordered table-hover"></table>
 </div>
</div>
<?php 
}
?>

Вот метод, который называется

<code>public static function refreshRIData(){

        set_time_limit(180);

        // Insert data in db from Plan
        RITable::insertRiFromTPaln();

        $data_Ri = RITable::gtRiForRefresh();

        for ($i=0; $i < sizeof($data_Ri) ; $i++) { 

            // set RI ref
            $RI = $data_Ri[$i]['ri_ref_ri'];

            // get all transactions impacted by this RI
            $transactions_impacted_result = RITable::getTransactionImpacted($RI);

            // prepare variable to insert in db
            $transactions_impacted = json_encode($transactions_impacted_result);

            // get first transaction impacted
            $transaction_result = RITable::getTransaction($RI);

            $transaction = json_encode(array('pod_id' => $transaction_result['pod_id'], 'pod_name' => $transaction_result['pod_name']));

            // get info of Ri from webservice
            $info_ri = json_decode(WebServiceController::RefreshRI($RI));
            //echo '<pre>'; print_r($info_ri); echo '
';$ owner = $ info_ri-> response-> owner;// форматировать дату $ create_date = new DateTime ($ info_ri-> response-> creation_date);$ create_date = $ create_date-> format ('Ymd H: m: i');$ target_date = new DateTime ($ info_ri-> response-> target_correction_date);$ target_date = $ target_date-> format ('Ymd H: m: i');// создаем кеш Pno для пользователей if (isset ($ owner)) {$ cache_to_renew =! Login :: cacheToKeep ($ owner);} if ($ cache_to_renew) {self :: reLoadPno ($ owner);} // получить марку пользователя в кэш-файлах pno $ brand = RcaviewController :: getBrand ($ info_ri-> response-> owner);// вызов метода для вставки данных в db RITable :: updateRI ($ RI, $ info_ri-> response-> title, $ info_ri-> response-> current, $ issue, $ транзакция, $ info_ri-> response-> required_for_program,$ info_ri-> response-> owner, $ brand, $ target_date, $ create_date, $ Transactions_impacted);} set_time_limit (30);вернуть истину;} приватная статическая функция reLoadPno ($ owner) {echo "

1 Ответ

0 голосов
/ 25 сентября 2019

Как я понимаю, вы не правы, когда вы выполняете location.reload () после успешного получения данных ajax.Эта команда перезагружает документ, и это похоже на перезапуск вашей страницы, как это было до вызова ajax.

Вам необходимо проанализировать данные, полученные при вызове ajax, и отобразить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...