调用一个php函数按钮点击jquery - Astra Api
Call a php function on button click jquery - Astra Api
我正在执行三个查询,我在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."  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格式。
我认为您可以通过创建一个单独的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."  to  ".$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." );
});
相关文章:
- jQuery使用api获取typeform结果
- 如何使用jquery解析具有相同标签名称的yahoo天气api数据
- Twitter API在jQuery AJAX中设置授权头
- 在JQuery中使用谷歌地图Api事件/侦听器
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- JQuery-重新加载Div并在点击时调用API
- jQuery API 中的 JavaScript 函数中的函数
- 新添加的元素无法使用 jQuery API closest() 在 DOM 树中向上遍历其祖先,返回“undefined
- JQuery API 文档生成器,用于打字稿自定义小部件
- 应用程序学习Jquery API's
- jQuery API兼容的微框架(Zepto除外)
- 修改一个指令不使用jquery api
- 这看起来很简单,但是我在jquery API中找不到所需的函数
- 第0行出现错误.谷歌jquery api
- 是否有一个JQuery API用于根据数字分配月份名称
- jQuery - API选项作为一个函数
- 修改的jQuery API $.when()在超时时返回undefined
- jQuery API 不适用于 JavaScript
- jQuery API 架构选择:为什么为 attr(), val(), .. 返回单个值而不是数组
- 如何在html字符串上使用jquery API