在服务器上调用 PHP 函数但在本地服务器上工作时找不到 JS 函数

Posted

技术标签:

【中文标题】在服务器上调用 PHP 函数但在本地服务器上工作时找不到 JS 函数【英文标题】:JS function not found when calling PHP function on server but works on local server 【发布时间】:2020-04-29 15:34:07 【问题描述】:

如标题中所述,我的代码在本地工作,但不在服务器上。 更准确地说,当我调用任何 php 函数时,它找不到我的 JS 函数。

总结一下:这里的目标是从通过从数据库中检索数据创建的 html 表生成一个 excel (.XLS) 文件。我的 Wamp 服务器在本地一切正常,但是当我将它移动到服务器时,调用 JS 函数 getDashboardResumeJ () 时出现此错误:

DashboardResume.php:124 Uncaught ReferenceError: getDashboardResumeJ is not defined

如果我删除主文件中的所有 PHP,则在服务器上一切正常。

主文件中的 PHP :

<button id="buttonXLS" href="#" onclick="exportTableToExcel('tableRecap', 'Rapport Mensuel <?php echo $year . '/' . $month?>')">Export to Excel</button>  
      <table style="display:none" id="tableRecap" > 

            <tr>
                <td style="font-weight: bold">Nom et prénom</td>
                <?php $arrayId = array(selectTableEmploye('nom', 'prenom')); ?>
            </tr>
            <tr>
                <td style="font-weight: bold">Date d'entrée</td>
                <?php selectTableEmploye('date_embauche'); ?>
            </tr>
            <tr>
                <td style="font-weight: bold">Date de sortie</td>
                <?php selectTableEmploye('date_depart'); ?>
            </tr>
            <tr>
                <td style="font-weight: bold">Remarque 1</td>
                <?php selectTableTimesheet('commentaire1',$arrayId,$month,$year); ?>
            </tr>
            <tr>
                <td style="font-weight: bold">Remarque 2</td>
                <?php selectTableTimesheet('commentaire2',$arrayId,$month,$year); ?>
            </tr>
            <tr>
                <td style="font-weight: bold">Remarque 3</td>
                <?php selectTableTimesheet('commentaire3',$arrayId,$month,$year); ?>
            </tr>
            <tr>
                <td style="font-weight: bold">Remarque 4</td>
                <?php selectTableTimesheet('commentaire4',$arrayId,$month,$year); ?>
            </tr>

            <?php
                generateDays($dateMonth, $dateYear); 

            ?>

        </table>

主文件中的JS:

<script> 

function exportTableToExcel(tableID, filename = '')
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

    // Specify file name
    filename = filename?filename+'.xls':'excel_data.xls';

    // Create download link element
    downloadLink = document.createElement("a");

    document.body.appendChild(downloadLink);

    if(navigator.msSaveOrOpenBlob)
        var blob = new Blob(['\ufeff', tableHTML], 
            type: dataType
        );
        navigator.msSaveOrOpenBlob( blob, filename);
    else
        // Create a link to the file
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;

        // Setting the file name
        downloadLink.download = filename;

        //triggering the function
        downloadLink.click();
    



$(document).ready(function() 

    $('.month_dropdown').on('change',function() 

        getDashboardResumeJ('dashboard_div', $('.year_dropdown').val(), $('.month_dropdown').val()); 

    ); 

    $('.year_dropdown').on('change',function() 

        getDashboardResumeJ('dashboard_div', $('.year_dropdown').val(), $('.month_dropdown').val()); 

    );   



    getCommJ(); 



    );  



function getDashboardResumeJ(target_div, year, month) 

    $.ajax( 

        type:'POST', 

        url:'functionsDashboardResume.php', 

        data:'func=getDashboardResumeP&year='+year+'&month='+month, 

        success:function(html) 

            $('#'+target_div).html(html); 

         

    ); 


主文件 PHP 调用的 PHP 函数:

<?php


function selectTableEmploye($attribute, $optAttribute = '')

    include "dbConfig.php";

    $query = 'SELECT * FROM employe ORDER BY id_employe ASC';

    if ($stmt = $db->prepare($query)) 
        /* execute query */
        $stmt->execute();

        /* Get the result */
        $result = $stmt->get_result();

        $arrayId = [];

        if ($optAttribute != '') 
            while ($row = $result->fetch_assoc()) 
                echo '<td> ' . $row[$attribute] . ' ';
                echo $row[$optAttribute] . '</td>';
                array_push($arrayId, $row['id_employe']);
            
         else 
            while ($row = $result->fetch_assoc()) 
                echo '<td> ' . $row[$attribute] . '</td>';
            
        

        /* free results */
        $stmt->free_result();
    
    return $arrayId;


function selectTableTimesheet($attribute, $arrayId, $month, $year)

    include "dbConfig.php";
    if (!empty($arrayId)) 
        foreach ($arrayId[0] as $value) 

            $query =
                'SELECT DISTINCT commentaire1,commentaire2,commentaire3,commentaire4 FROM timesheet,employe WHERE timesheet.id_employe =' .
                $value. ' AND timesheet.annee = ' . $year . ' AND timesheet.mois = ' . $month;

            if ($stmt = $db->prepare($query)) 


                /* execute query */
                $stmt->execute();

                /* Get the result */
                $result = $stmt->get_result();




                while ($row = $result->fetch_assoc()) 
                    echo '<td> ' . $row[$attribute] . '</td>';
                
            

        
    
    else
        $query =
                'SELECT * FROM timesheet';
            if ($stmt = $db->prepare($query)) 
                /* execute query */
                $stmt->execute();

                /* Get the result */
                $result = $stmt->get_result();



                while ($row = $result->fetch_assoc()) 

                    echo '<td> ' . $row[$attribute] . '</td>';
                
    


function generateDays($month, $year)

    $daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);

    for ($i = 1; $i <= $daysInMonth; $i++) 

        if($month != 10)
            $monthFunc = trim($month,0);
        
        else
            $monthFunc = 10;
        

        $data = getActivity($i,$monthFunc,$year);

        $flag_half_day = 0;
        $flag_row_number = 1;

        $secondRowContent = array();

        $numItems = mysqli_num_rows($data);
        $checkIndex = 0;

        echo "<tr>" . "<td style='text-align: right;font-weight: bold;'>" . $i . "</td>" ;




        while ($row = $data->fetch_assoc()) 
            if($flag_row_number == 1)
                //cas 2b
                if ($flag_half_day == 1)

                    array_push($secondRowContent,'<td>' . $row['code_fiduciaire'] . $row['nombre_heure'] . '</td>');
                    $flag_half_day = 0;
                
                else
                    //cas 1
                    if($row['nombre_heure'] == 8)
                        echo '<td>' . $row['code_fiduciaire'] . $row['nombre_heure'] . '</td>';
                        array_push($secondRowContent,'<td></td>');
                        $flag_half_day = 0;
                    
                    //cas 2a
                    else if(is_null($row['nombre_heure']))                      
                        echo '<td></td>';

                    
                    else
                        echo '<td>' . $row['code_fiduciaire'] . $row['nombre_heure'] . '</td>';
                        $flag_half_day = 1;
                    
                
                if($checkIndex++ == ($numItems - 1))
                    $flag_row_number = 2;
                    echo "</tr>";
                
            


        

        if($flag_row_number == 2)
            echo '<tr> <td style="text-align: right;font-weight: bold;">' .  $i . '</td>';
                foreach($secondRowContent as $content)
                    echo $content;
                
                echo '</tr>';
        
        else
            echo '<tr> <td style="text-align: right;font-weight: bold;">' .  $i . '</td> </tr>';
        

    




 function getActivity($day, $month, $year)
     include "dbConfig.php";


     $query = 
            'select time_dimension.db_date, time_dimension.holiday_flag, employe.id_employe, employe.nom, timesheet.nombre_heure, timesheet.date, taches.code_fiduciaire FROM time_dimension left outer join employe on time_dimension.db_date >= employe.date_embauche left outer join timesheet on timesheet.date = time_dimension.db_date AND timesheet.id_employe = employe.id_employe left outer join taches on timesheet.id_tache = taches.id_tache where time_dimension.year = ' . $year . ' and time_dimension.month = ' . $month . ' and time_dimension.day = ' . $day .  ' AND COALESCE (timesheet.nombre_heure,1) != 0 ORDER BY employe.id_employe, time_dimension.db_date' ;
            if ($stmt = $db->prepare($query)) 


                 /* execute query */
                 $stmt->execute();

                 /* Get the result */
                 $result = $stmt->get_result();


                 return $result;

 
 

?>

如果您需要更多 sn-ps 或信息,请不要犹豫。

感谢您的帮助, 祝你有美好的一天

【问题讨论】:

您确定您的 javascript 文件加载正确吗?该函数实际上是在该文件中定义的吗? 该函数定义在代码的第二个sn-p中,与第一个位于同一文件中。 【参考方案1】:

对于那些有同样问题的人来说,我正在使用的服务器与我在本地工作的服务器没有相同的 PHP 版本。

在本地和服务器上尝试 phpinfo() 以检查您的 PHP 版本是否相同。

【讨论】:

以上是关于在服务器上调用 PHP 函数但在本地服务器上工作时找不到 JS 函数的主要内容,如果未能解决你的问题,请参考以下文章

PHP Captcha 在服务器上不起作用,但在本地工作

Php Curl 在本地机器上返回数据,但在服务器上返回 bool false

Django 在服务器上找不到静态文件,但在本地机器上工作正常

golang FTP PASS(密码)命令在本地工作,但在 ECS 上运行时不起作用

$.post & AJAX 在服务器上不工作,但在本地主机上工作正常

PHP 方法调用导致 Ubuntu VM 出现问题