Я выполняю три запроса, и я пишу одну и ту же структуру (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."  to  ".$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."  to  ".$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."  to  ".$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.
Что "результат" в сценарии в виду? Я имею в виду $ («# result»). Load() – Bobby
означает, что ввести html, полученный путем вызова php-скрипта в div с идентификатором «result». Вы должны ввести это в обработчик кликов по js –
Если вы сочтете это полезным, вы можете проголосовать за ответ –