我开始认为这不可能。我目前拥有Facebook营销API,并且当我放置一段时间(例如从今天起减去1个月)时,一切都运行良好。但是,我希望有一个引导日期范围选择器来为我的客户选择时间范围。因此,$ params变量是我正在尝试使用的time_range。
或者即使是不同的东西我也可以做任何有用的事情都会很棒。
我需要的只是API获取日期并将其用于Facebook的见解。我正在使用ajax调用发送_POST startDate和endDate来存储到他们自己的变量$ startDate / $ endDate中,当我尝试代码时,没有任何东西得到回应。下面是AJAX调用,因为我已经在Web应用程序的其他部分使用了它。第二部分代码是Marketing API代码。
AJAX CALL FILE。
$(document).ready(function() {
$('#config-demo').click(function() {
$(this).parent().find('#demo').click();
});
updateConfig();
function updateConfig() {
var options = {
"showDropdowns": true,
};
options.opens = "center";
options.ranges = {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
'Last 14 Days': [moment().subtract(13, 'days'), moment()],
'Last 28 Days': [moment().subtract(27, 'days'), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
};
$('#config-demo').daterangepicker(options, function(start, end, label) {
var startDate = start.format('YYYY-MM-DD');
var endDate = end.format('YYYY-MM-DD');
passDate(startDate, endDate);
});
}
});
function passDate(startDate,endDate) {
$('.loader').show();
$.ajax({
method: 'POST', // define the type of HTTP verb we want to use
url: 'fb_daterange.php', // the url where we want to POST
dataType: 'json', // Our data object
data: {startDate: startDate, endDate: endDate} // Ensure we pass the start and end dates to $_POST in PHP
})
// using the done promise callback
.done(function(data) {
console.log('done callback - data: ',data);
$('.loader').hide();
alert('yoyoyo');
$('#fbdata').text(data.message1); // log data to the console so we can see
});
}
营销API文件,其中AJAX的日期为......
<?php
if((!empty($_POST['startDate'])&&(!empty($_POST['endDate'])))) { // Check whether the date is empty
//setup variables for start and end date..
$startDate = date('Y-m-d', strtotime($_POST['startDate']));
$endDate = date('Y-m-d', strtotime($_POST['endDate']));
$account = new AdAccount('act_xxxxxxxxxxxx');
$params = array(
'time_range' => ("{'since': '".$startDate."', 'until': '".$endDate."'}"),
'level' => 'ad',
'limit' => '20',
);
$fields = array(
AdsInsightsFields::CAMPAIGN_NAME,
AdsInsightsFields::CAMPAIGN_ID,
AdsInsightsFields::IMPRESSIONS,
AdsInsightsFields::UNIQUE_CLICKS,
AdsInsightsFields::REACH,
AdsInsightsFields::SPEND,
AdsInsightsFields::TOTAL_ACTIONS,
);
$insights = $account->getInsights($fields, $params);
foreach($insights as $i) {
$impress = number_format((float)$i->impressions);
$reach = number_format((float)$i->reach);
$totalAction = number_format((float)$i->total_actions);
$i->campaign_id;
$i->campaign_name;
$impress;
$i->unique_clicks;
$reach;
$i->spend;
$totalAction;
}
$return['message1'] = $startDate;
echo $startDate;
header('Content-Type: text/json');
echo json_encode($return); //echo response back to Home page...
}
?>
我坚持的部分是我认为带有time_range的$ params,因为当我评论所有营销api代码并使用其他东西发送时,如$ t =“hello”;并在其发送信息的网络应用程序上使用日期范围选择器。