此:
var requestOptions = [
{
id: 1
},
{
id: 2
}];
console.log(requestOptions);
回复我:
0: Object
id: 2
1: Object
id: 2
为什么这样?看起来他们正在合并,我不想要它。
****完整代码如下*** 正如我在评论中提到的,上面的简化版本运行正常(抱歉)。 但是,以下不是。
setDataTable函数,使用相同的变量名进行合并和验证,然后发送Ajax调用。
google.charts.setOnLoadCallback(function() {
// Set datasources
var requestOptions = [
{
id: 1,
fields: 'cidade_uf, uf, data as Data, SUM(demanda) AS Demanda, SUM(mercado) AS Mercado',
formats: '[{"type":"string"}, {"type":"string"}, {"type":"date", "options": {"format":"M Y"}},{"type":"decimal","options":{"cases":2}},{"type":"money","options":{"sign":"R$"}}]',
groupby: 'cidade_uf, uf, data',
s: '<?=$source1?>'
},
{
id: 2,
fields: 'data as Data, SUM(demanda)/SUM(mercado) as `Mkt Share (%)`',
formats: '[{"type":"date", "options": {"format": "M Y"}}, {"type":"percent", "options":{"cases": 0}}]',
groupby: 'data',
s: '<?=$source1?>'
}];
console.log(requestOptions);
setDataTable(requestOptions,dataCallback);
});
答案 0 :(得分:0)
我发现了问题,实际上是在这里(对不起,我没有发布):
var mergeRequest = {
fields: '',
formats: '',
condition: '',
groupby: '',
orderby: '',
order: '',
limit: '',
s: '',
}
$.each(requestOptions, function( index ) {
requestOptions[index] = $.extend(mergeRequest, requestOptions[index]);
});
并将其更改为(使用新变量合并选项)并在循环中将mergeOptions重新声明为空:
var requestOptionsVal = []
$.each(requestOptions, function( index ) {
var mergeRequest = {
fields: '',
formats: '',
condition: '',
groupby: '',
orderby: '',
order: '',
limit: '',
s: '',
};
requestOptionsVal[index] = $.extend(mergeRequest, requestOptions[index]);
});
事实证明,正如@PatrickBarr所提到的,记录结果有一个延迟,它在执行的不确定点输出变量值。我不知道这一点,我当然不会太依赖于通过控制台进行调试。
谢谢,