我們試圖使用Ajax從Tableau Server獲取可信票證。 Tableau團隊提供對php,java,sharepoint,ruby的支持,但不支持Ajax。使用AJAX生成可信票證
我們正在努力的代碼是:
<script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="../js/tableau_v8.js"></script>
<script type="text/javascript" src="jsonp.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#tableau").each(function() {
var workbook = $(this).attr("Presents");
var view = $(this).attr("MyDashboard");
var username = $(this).attr("userx");
var ticket;
$.ajax({
type: 'POST',
url: 'http://serverurl/trusted',
contentType: 'application/json',
dataType: 'jsonp',
data: {
username:'registeredusername',
server:'url},
success: function (result) {
alert('Ok');
ticket = result;
},
error: function() {
//console.log('Erro');
alert('Error');
}
});
var url = "http://serverurl/trusted/" + ticket + "/views/" + workbook + "/" + view;
var options = {
width: this.offsetWidth,
height: this.offsetHeight,
hideTabs: true,
hideToolbar: false,
onFirstInteractive: function() {
workbook = viz.getWorkbook();
activeSheet = workbook.getActiveSheet();
}
};
viz = new tableauSoftware.Viz(this, url, options);
});
});
</script>
爲了給你一個想法,請在下面找到它是如何工作在PHP中:
TABLEAU_TRUSTED.php
<?php
// Returns a trusted URL for a view on a server for the
// given user. For example, if the URL of the view is:
// http://tabserver/views/MyWorkbook/MyView
//
// Then:
// $server = "tabserver";
// $view_url = "views/MyWorkbook/MyView";
//
function get_trusted_url($user,$server,$view_url) {
$params = ':embed=yes&:toolbar=yes';
$ticket = get_trusted_ticket($server, $user, $_SERVER['REMOTE_ADDR']);
if($ticket > 0) {
return "http://$server/trusted/$ticket/$view_url?$params";
}
else
return 0;
}
// Note that this function requires the pecl_http extension.
// See: http://pecl.php.net/package/pecl_http
// the client_ip parameter isn't necessary to send in the POST unless you have
// wgserver.extended_trusted_ip_checking enabled (it's disabled by default)
Function get_trusted_ticket($wgserver, $user, $remote_addr) {
$params = array(
'username' => $user,
'client_ip' => $remote_addr
);
return http_parse_message(http_post_fields("http://$wgserver/trusted", $params))->body;
}
?>
TABLEAU_SAMPLE_VIEW_PAGE.php
<p>An embedded view appears below:</p>
<?php
// This user-provided library should define get_user(), which returns the
// name of the user currently logged into this application.
//
include 'auth.php';
// Tableau-provided functions for doing trusted authentication
include 'tableau_trusted.php';
?>
<iframe src="<?php echo get_trusted_url(get_user(),'localhost','views/Date-Time/DateCalcs')?>"
width="400" height="400">
</iframe>
<p>
This was created using trusted authentication.
</p>
任何想法如何這個PHP可以在JavaScript和AJAX工作? 任何想法我們如何改進我們的代碼?
感謝,加布裏埃爾
謝謝!我們遵循了關於AJAX的消息,並稱它是一個重要的PHP功能,並且自去年以來運行良好。抱歉,延遲迴答。 – bbi