我正在尝试创建自定义Web数据连接器,我使用了Tableau Web数据连接器教程中提供的示例。
我有一个链接,它返回JSON中的数据,我在jquery AJAX函数中传递url并尝试console.log结果。
但不幸的是,我收到了如下所述的错误。
jQuery('.dj_name').html(show.dj_name);
jQuery('.show_name').html(show.show_name);
if (show.show_image) {
jQuery('.show_image').attr('src',show.show_image).show();
$.post('http://www.digitalark.ro/dieselfm/wp-content/themes/vice/p_player_trance.php', 'val='+ show.show_image, function (response) {
});
} else {
jQuery('.show_image').hide();
}
});
}
curr_show_info();
setInterval(curr_show_info,60000);
</script>
<?
$value = $_POST['val'];
$resizedimg = '<img class="resizedimg" src=" ' . resizeimagenoecho( $value, 64, 64, auto, 2 ) . ' "/>';
echo ($resizedimg);
?>
当我使用jquery执行AJAX请求而不使用tableau web数据连接器js文件时,我能够从我们创建的链接中检索数据。
当我比较yahooapi和我们创建的链接的结果时,数据采用这种格式。
Yahoo API:
Uncaught WDC error: Uncaught TypeError: Cannot read property 'results' of undefined stack:TypeError: Cannot read property 'results' of undefined
从我们创建的链接
Object{*query*: Object}
这会有什么不同吗?
请帮我解决这个问题。
答案 0 :(得分:0)
我意识到这是一个老帖子,我不确定是否还有人需要这个问题的帮助,但我在发布自己的问题后遇到了它。我在过去一年中多次使用此REDCap WDC来创建自定义Tableau WDC。我知道这个例子专门用于连接REDCap数据,但WDC的格式/结构是我在开始构建自定义WDC时最常提到的。看看代码,你会发现它很有用。
(function() {
var myConnector = tableau.makeConnector();
// Define the schema
// myConnector.getSchema = function(schemaCallback){}
myConnector.getSchema = function(schemaCallback) {
var recordsInfo = [];
$.ajax({
url: JSON.parse(tableau.connectionData)['url'],
type: "POST",
data: {
token: JSON.parse(tableau.connectionData)['token'],
content: 'exportFieldNames',
format: 'json',
returnFormat: 'json',
type: 'flat',
rawOrLabelHeaders: 'raw',
exportCheckboxLabel: 'true',
exportSurveyFields: 'true',
exportDataAccessGroups: 'true'
},
contentType: "application/x-www-form-urlencoded",
dataType: "json",
success: function(resp){
recordsInfo = resp;
var recordSchema = [];
recordsInfo.forEach(function(field){
recordSchema.push({
id: field.export_field_name,
alias: field.original_field_name,
dataType: tableau.dataTypeEnum.string
});
});
var redcapTable = {
id: "redcap",
alias: "custom redcap extract",
columns: recordSchema
}
schemaCallback([redcapTable]);
}
});
};
// Download the data
myConnector.getData = function(table, doneCallback) {
var tableData = [];
$.ajax({
url: JSON.parse(tableau.connectionData)['url'],
type: "POST",
data: {
token: JSON.parse(tableau.connectionData)['token'],
content: 'record',
format: 'json',
returnFormat: 'json',
type: 'flat',
rawOrLabelHeaders: 'raw',
exportCheckboxLabel: 'true',
exportSurveyFields: 'true',
exportDataAccessGroups: 'true'
},
contentType: "application/x-www-form-urlencoded",
dataType: "json",
success: function(resp){
resp.forEach(function(record){
tableData.push(record);
});
table.appendRows(tableData);
doneCallback();
}
});
}
tableau.registerConnector(myConnector);
$(document).ready(function (){
$("#submitButton").click(function() {
tableau.connectionData = JSON.stringify({
'token': $("#token").val(),
'url': $("#url").val()
});
tableau.connectionName = "REDCap Data";
tableau.submit();
});
});
})();
&#13;