2016-08-31 4 views
-2

Я выполняю три запроса, и я пишу одну и ту же структуру (html) три раза в PHP. Есть ли лучший способ написать общую функцию в PHP и вызвать ее по нажатию кнопки и передать параметр, а затем выполнить запрос? Это также улучшит мое время загрузки страницы.Вызвать функцию php на кнопку click jquery - Astra Api

PHP

<html> 
    <head> 
     <script src="js/jquery-3.1.0.slim.min.js"></script > 
     <script src="js/bootstrap.min.js"></script > 
     <link rel="stylesheet" href="css/bootstrap.min.css" /> 
     <link rel="stylesheet" href="css/style.css" /> 
     <script src="js/script.js"></script > 
    </head> 
    <body> 
    <?php 
       $url = 'https://www.aaiscloud.com/***********/'; 
       $responderUrl = "/~api/calendar/calendarList?action=get"; 

        $responderParameterall = "view=xml&fields=ActivityName,ParentActivityName,Description,StartDate,EndDate,StartMinute,EndMinute,ActivityTypeCode,CampusName,BuildingCode,RoomNumber,RoomName&sortOrder=StartDate&filter=(EventMeetingByActivityId.Event.EventTypeId in ('fdb602db-c411-4207-8f73-85f9121f6875','65a71b04-7b5a-4ead-aec4-c6d4d7ef7249','0a02bf88-e1d4-4cfc-a5ba-2c6b0ebb8118'))"; 

        $responderParameterstudent = "view=xml&fields=ActivityName,ParentActivityName,Description,StartDate,EndDate,StartMinute,EndMinute,ActivityTypeCode,CampusName,BuildingCode,RoomNumber,RoomName&sortOrder=StartDate&filter=(EventMeetingByActivityId.Event.EventTypeId in ('65a71b04-7b5a-4ead-aec4-c6d4d7ef7249','fdb602db-c411-4207-8f73-85f9121f6875'))";      

        $responderParameterfaculty = "view=xml&fields=ActivityName,ParentActivityName,Description,StartDate,EndDate,StartMinute,EndMinute,ActivityTypeCode,CampusName,BuildingCode,RoomNumber,RoomName&sortOrder=StartDate&filter=(EventMeetingByActivityId.Event.EventTypeId in ('0a02bf88-e1d4-4cfc-a5ba-2c6b0ebb8118','fdb602db-c411-4207-8f73-85f9121f6875'))"; 
        $curl = curl_init();      

        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,100); 
        curl_setopt($curl, CURLOPT_TIMEOUT, 400); 

        curl_setopt($curl, CURLOPT_URL, $url . "/Logon.ashx");   
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);   
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 

        curl_setopt($curl, CURLOPT_HEADER, FALSE);   
        curl_setopt($curl, CURLOPT_COOKIEJAR, 'tmp_astra_cookie_file.txt');      

        curl_setopt($curl, CURLOPT_POSTFIELDS, "{'username': '*****', 'password':'******'}"); 
        if (curl_exec($curl)) { 
        //echo "Login Successful<br>"; 
        } 
        else { 
        echo "Ad Astra API login failure.<br>"; 
        exit(); 
        } 
        curl_close($curl);   
        $request = curl_init(); 

        curl_setopt($request, CURLOPT_URL, $url . $responderUrl); 

        curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);   
        curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE); 

        curl_setopt($request, CURLOPT_CUSTOMREQUEST, "POST");   
        curl_setopt($request, CURLOPT_HEADER, FALSE); 

        curl_setopt($request, CURLOPT_COOKIEFILE, 'tmp_astra_cookie_file.txt');   
        curl_setopt($request, CURLOPT_COOKIEJAR, 'tmp_astra_cookie_file.txt'); 

        curl_setopt($request, CURLOPT_POSTFIELDS, $responderParameterall); 
        $resultall = curl_exec($request); 

        curl_setopt($request, CURLOPT_POSTFIELDS, $responderParameterstudent); 
        $resultstudent = curl_exec($request); 


        curl_setopt($request, CURLOPT_POSTFIELDS, $responderParameterfaculty); 
        $resultfaculty = curl_exec($request); 

        curl_close($request); 

        if ($resultall && $resultstudent && $resultfaculty) { 
         $data = new SimpleXMLElement($resultall); 
         $datastu = new SimpleXMLElement($resultstudent); 
         $datafac = new SimpleXMLElement($resultfaculty); 
            echo "<div class='container'> 
               <h2>Filter by</h2> 
               <ul class='nav nav-pills' id='myTab' data-tabs='tabs'> 
               <li class='active'><a data-toggle='tab' class='alleve' href='#home'>All Announcements</a></li> 
               <li><a data-toggle='tab' class='studenteve' href='#menu1'>Student Announcements</a></li> 
               <li><a data-toggle='tab' class='facultyeve' href='#menu2'>Faculty/Staff Announcements</a></li> 
               </ul> 
               <div class='tab-content'> 
                <div id='home' class='tab-pane fade in active'>"; 
                 foreach ($data->Item as $entry) { 
                  $startDate = new DateTime($entry->StartDate); 
                  $enddate = new DateTime($entry->EndDate); 
                  $sDate = $startDate->format('M d, Y'); 
                  $eDate = $enddate->format('M d, Y'); 
                  $semester = $entry->ActivityName; 
                  $eventName = $entry->ParentActivityName; 
                  if(strcmp($sDate,$eDate) != 0) 
                   $eventdate = $sDate."&nbsp to &nbsp".$eDate; 
                  else 
                   $eventdate = $sDate; 
                  $description = $entry->Description; 
                  $month = $startDate->format('M'); 
                  $day = $startDate->format('d'); 
                  echo "<div> 
                    <div class='block-event'> 
                     <div class='event-date'> 
                      <div class='month'><span class='date-display-single'>".$month."</span></div> 
                      <div class='date'><span class='date-display-single'>".$day."</span></div> 
                     </div> 
                    <div class='event-info'> 
                     <div class='title'>".$eventName.' - '.$semester."</div> 
                     <div class='eventfrom'>".$eventdate."</div> 
                     <div class='moreinfo'> 
                      <a class='minfo'>More Info</a> 
                      <div class='description'>".$description."</div> 
                     </div> 
                    </div> 
                   </div> 
                   </div>";  
                 }; 
                echo "</div> <div id='menu1' class='tab-pane fade'>"; 
                  foreach ($datastu->Item as $entry) { 
                  $startDate = new DateTime($entry->StartDate); 
                  $enddate = new DateTime($entry->EndDate); 
                  $sDate = $startDate->format('M d, Y'); 
                  $eDate = $enddate->format('M d, Y'); 
                  $semester = $entry->ActivityName; 
                  $eventName = $entry->ParentActivityName; 
                  if(strcmp($sDate,$eDate) != 0) 
                   $eventdate = $sDate."&nbsp to &nbsp".$eDate; 
                  else 
                   $eventdate = $sDate; 
                  $description = $entry->Description; 
                  $month = $startDate->format('M'); 
                  $day = $startDate->format('d'); 
                  echo "<div> 
                    <div class='block-event'> 
                     <div class='event-date'> 
                      <div class='month'><span class='date-display-single'>".$month."</span></div> 
                      <div class='date'><span class='date-display-single'>".$day."</span></div> 
                     </div> 
                    <div class='title'>".$eventName.' - '.$semester."</div> 
                    <div class='eventfrom'>".$eventdate."</div> 
                    <div class='moreinfo'> 
                     <a class='minfo'>More Info</a> 
                     <div class='description'>".$description."</div> 
                    </div> 
                   </div> 
                   </div>";  
                 }; 
                 echo "</div> 
                 <div id='menu2' class='tab-pane fade'>"; 
                  foreach ($datafac->Item as $entry) { 
                  $startDate = new DateTime($entry->StartDate); 
                  $enddate = new DateTime($entry->EndDate); 
                  $sDate = $startDate->format('M d, Y'); 
                  $eDate = $enddate->format('M d, Y'); 
                  $semester = $entry->ActivityName; 
                  $eventName = $entry->ParentActivityName; 
                  if(strcmp($sDate,$eDate) != 0) 
                   $eventdate = $sDate."&nbsp to &nbsp".$eDate; 
                  else 
                   $eventdate = $sDate; 
                  $description = $entry->Description; 
                  $month = $startDate->format('M'); 
                  $day = $startDate->format('d'); 
                  echo "<div> 
                    <div class='block-event'> 
                     <div class='event-date'> 
                      <div class='month'><span class='date-display-single'>".$month."</span></div> 
                      <div class='date'><span class='date-display-single'>".$day."</span></div> 
                     </div> 
                    <div class='title'>".$eventName.' - '.$semester."</div> 
                    <div class='eventfrom'>".$eventdate."</div> 
                    <div class='moreinfo'> 
                     <a class='minfo'>More Info</a> 
                     <div class='description'>".$description."</div> 
                    </div> 
                   </div> 
                   </div>";  
                 }; 
                 echo"</div> 
               </div> 
              </div>"; 
        }  
        else { 
         echo "Secondary Request failure.<br>"; 
         exit(); 
        } 
    ?> 
    </body> 
    </html> 

JS

$('document').ready(function(){ 
    $('#myTab a').click(function (e) { 
     e.preventDefault(); 
     $(this).tab('show'); 
    }) 
    $('.description').hide(); 
    $('.minfo').click(function() { 
     $(this).text(function(i, v){ 
      return v === 'More Info' ? 'Less Info' : 'More Info' 
     }) 
     $(this).siblings('.description').toggle(); 
     //$(this :first-child).show();//("slide", { direction: "bottom" }, 1000); 
    }); 
}); 

Я использую ASTRA API для получения данных и данные будут в формате XML.

ответ

0

Я думаю, вы могли бы улучшить создание отдельного php-файла под названием func.inc.php.

<?php 

    define("URL", 'https://www.aaiscloud.com/***********/'); 
    define("RESPONDER_URL", "/~api/calendar/calendarList?action=get"); 
    // init login 
    function login(){ 
     $curl = curl_init(); 
     curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,100); 
     curl_setopt($curl, CURLOPT_TIMEOUT, 400); 
     curl_setopt($curl, CURLOPT_URL, URL . "/Logon.ashx"); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
     curl_setopt($curl, CURLOPT_HEADER, FALSE); 
     curl_setopt($curl, CURLOPT_COOKIEJAR, 'tmp_astra_cookie_file.txt'); 
     curl_setopt($curl, CURLOPT_POSTFIELDS, "{'username': '*****', 'password':'******'}"); 
     return curl_exec($curl); 
    } 

    function query($params){ 
     $request = curl_init(); 
     curl_setopt($request, CURLOPT_URL, URL . RESPONDER_URL); 
     curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($request, CURLOPT_RETURNTRANSFER, TRUE); 
     curl_setopt($request, CURLOPT_CUSTOMREQUEST, "POST"); 
     curl_setopt($request, CURLOPT_HEADER, FALSE); 
     curl_setopt($request, CURLOPT_COOKIEFILE, 'tmp_astra_cookie_file.txt'); 
     curl_setopt($request, CURLOPT_COOKIEJAR, 'tmp_astra_cookie_file.txt'); 
     curl_setopt($request, CURLOPT_POSTFIELDS, $params); 
     $result = curl_exec($request); 
     curl_close($request); 
     return $result; 
    } 

    function showResult(array $data){ 
     foreach ($data->Item as $entry) { 
     $startDate = new DateTime($entry->StartDate); 
     $enddate = new DateTime($entry->EndDate); 
     $sDate = $startDate->format('M d, Y'); 
     $eDate = $enddate->format('M d, Y'); 
     $semester = $entry->ActivityName; 
     $eventName = $entry->ParentActivityName; 
     if(strcmp($sDate,$eDate) != 0) 
     $eventdate = $sDate."&nbsp to &nbsp".$eDate; 
     else 
     $eventdate = $sDate; 
    $description = $entry->Description; 
    $month = $startDate->format('M'); 
    $day = $startDate->format('d'); 
    echo "<div>"; 
    echo "<div class='block-event'>"; 
    echo "<div class='event-date'>" 
    echo "<div class='month'><span class='date-display-single'>".$month."</span></div>"; 
    echo "<div class='date'><span class='date-display-single'>".$day."</span></div>"; 
    echo "</div>"; 
    echo "<div class='event-info'>"; 
    echo "<div class='title'>".$eventName.' - '.$semester."</div>"; 
    echo "<div class='eventfrom'>".$eventdate."</div>"; 
    echo "<div class='moreinfo'>"; 
    echo "<a class='minfo'>More Info</a>"; 
    echo "<div class='description'>".$description."</div>"; 
    echo "</div>"; 
    echo "</div>"; 
    echo "</div>"; 
    echo "</div>"; 
}; 

?> 

Теперь вам нужно создать другой php-файл с именем loadResult.php на примере.

<?php 
    //load func file, now you can use above functions 
    require './func.inc.php'; 
    $responderParameterall = "view=xml&fields=ActivityName,ParentActivityName,Description,StartDate,EndDate,StartMinute,EndMinute,ActivityTypeCode,CampusName,BuildingCode,RoomNumber,RoomName&sortOrder=StartDate&filter=(EventMeetingByActivityId.Event.EventTypeId in ('fdb602db-c411-4207-8f73-85f9121f6875','65a71b04-7b5a-4ead-aec4-c6d4d7ef7249','0a02bf88-e1d4-4cfc-a5ba-2c6b0ebb8118'))"; 
    $responderParameterstudent = "view=xml&fields=ActivityName,ParentActivityName,Description,StartDate,EndDate,StartMinute,EndMinute,ActivityTypeCode,CampusName,BuildingCode,RoomNumber,RoomName&sortOrder=StartDate&filter=(EventMeetingByActivityId.Event.EventTypeId in ('65a71b04-7b5a-4ead-aec4-c6d4d7ef7249','fdb602db-c411-4207-8f73-85f9121f6875'))"; 
    $responderParameterfaculty = "view=xml&fields=ActivityName,ParentActivityName,Description,StartDate,EndDate,StartMinute,EndMinute,ActivityTypeCode,CampusName,BuildingCode,RoomNumber,RoomName&sortOrder=StartDate&filter=(EventMeetingByActivityId.Event.EventTypeId in ('0a02bf88-e1d4-4cfc-a5ba-2c6b0ebb8118','fdb602db-c411-4207-8f73-85f9121f6875'))"; 
    login(); 

    $resultAll = query($responderParameterall); 
    $resultStudent = query($responderParameterstudent); 
    $resultFaculty = query($responderParameterfaculty); 

    if ($resultall && $resultstudent && $resultfaculty) { 
    $data = new SimpleXMLElement($resultall); 
    $datastu = new SimpleXMLElement($resultstudent); 
    $datafac = new SimpleXMLElement($resultfaculty); 

    echo "<div class='container'>"; 
     echo "<h2>Filter by</h2>"; 
     echo "<ul class='nav nav-pills' id='myTab' data-tabs='tabs'>"; 
     echo "<li class='active'><a data-toggle='tab' class='alleve' href='#home'>All Announcements</a></li>"; 
     echo "<li><a data-toggle='tab' class='studenteve' href='#menu1'>Student Announcements</a></li>"; 
     echo "<li><a data-toggle='tab' class='facultyeve' href='#menu2'>Faculty/Staff Announcements</a></li>"; 
     echo "</ul>"; 
     echo "<div class='tab-content'>"; 
     echo "<div id='home' class='tab-pane fade in active'>"; 
     showResult($data); 
     echo "</div>"; 
     echo "<div id='menu1' class='tab-pane fade'>"; 
     showResult($datastu); 
     echo "</div>"; 
     echo "<div id='menu2' class='tab-pane fade'>"; 
     showResult($$datafac); 
     echo "</div>"; 
    } 

    ?> 

Вы должны вызвать эту услугу с помощью метода JavaScript загрузки JQuery

$("#result").load("localhost/loadResult.php", function() { 
    alert("Load was performed."); 
}); 
+0

Что "результат" в сценарии в виду? Я имею в виду $ («# result»). Load() – Bobby

+0

означает, что ввести html, полученный путем вызова php-скрипта в div с идентификатором «result». Вы должны ввести это в обработчик кликов по js –

+0

Если вы сочтете это полезным, вы можете проголосовать за ответ –