Tableau嵌入了jQuery和PHP传递参数

时间:2017-05-16 01:29:57

标签: javascript php jquery tableau tableau-server

我在使用Tableau构建面向内部的仪表板时通常使用Wordpress,但在这种情况下这不起作用所以我从头开始。我是PHP的新手,略高于jQuery的新手,但我知道我的HTML方式。我需要将Okta javascript参数传递给Tableau嵌入。以下是我目前的代码:

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>
  var settings = {
     url: "https://harmelin.okta.com/api/v1/users/me",
    type: 'GET',
    dataType: 'json',
    contentType: 'application/json',
    xhrFields: {
        withCredentials: true
    },
    success: function (data) {
       // alert(JSON.stringify(data));
    },
    error: function(err){
      //  alert(JSON.stringify(err));
    }
   }

   jQuery.ajax(settings).done(function (success)  {
     console.log(success);
 var raw = success.profile.login;
 var email = raw.toLowerCase();
 var $login = email.replace(/@[^@]+$/, '');
jQuery("#write-data").append($login);

});
</script>
</head>

<body>
<?php

// Tableau-provided functions for doing trusted authentication
require_once 'tableau_trusted.php';

?>

<div id="write-data"></div>
<?php
$user = 'jfedorowicz';
$server = 'dashboard1.harmelin.com';
$view = 'JoesPlayground/views/PTOStuff/Dashboard1?LCUsername=';
$theLogin = $login;

echo '<iframe src="';
echo get_trusted_url( $user,$server,$view$theLogin );
echo '" width="400" height="400"> </iframe>';
?>

</body>

两个问题:

1)我要做的是将$ login(javascript变量)传递给$ view。我100%知道我没有做到这一点,但我无法测试,因为问题二。

2)我返回500错误:“无法加载资源:服务器响应状态为500(内部服务器错误)”我认为这是一个Tableau错误,但我无法弄明白。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

要生成授权令牌,可以使用给定的代码。
这段代码可以在2018.3之前的所有版本中正常工作

/ * PHP代码以生成身份验证令牌* /

$url = $dashboardURL . '/trusted';
$fields_string = "trusted_site=&username=" . $username;
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
$token = curl_exec($ch);

现在,只需在view/html文件中将此令牌和信息中心网址一起传递即可。