调用一个php函数按钮点击jquery - Astra Api

Call a php function on button click jquery - Astra Api

本文关键字:jquery Api Astra 按钮 函数 php 一个 调用      更新时间:2023-09-26

我正在执行三个查询,我在PHP中编写了三次相同的(html)结构。是否有更好的方法来编写一个通用的函数在PHP中调用一个按钮点击和传递参数,然后执行查询?这也将改善我的页面加载时间。

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格式。

我认为您可以通过创建一个单独的php文件来改进,名为funcc .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>";
  }
  ?>

你应该通过jQuery加载方法从javaScript调用这个服务

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