Javascript中的转义字符 函数drawVisualization(){ var query=new google.visualization.query('http://spreadsheets.google.com/tq?key=XXXXXXX'); query.setQuery('选择B、C、D、E、F、G、H,其中上(B)类上(%%)或上(D)类上(%%)或上(E)类上(%%)或上(F)类上(%%),按G描述标签G“数据”排序); 发送(handleQueryResponse); } 函数handleQueryResponse(响应){ if(response.isError()){ 警报('查询中的错误:'+response.getMessage()+'+response.getDetailedMessage()); 返回; } var data=response.getDataTable(); var formatter=新的google.visualization.PatternFormat( ''); //应用格式化程序并设置第一列的格式化值。 格式(数据[0,1,2,3,4,5,6,2]; var view=newgoogle.visualization.DataView(数据); view.setColumns([2,0,1,4,5]);//仅使用第一列创建视图。 可视化=新的google.visualization.Table(document.getElementById('Table'); 可视化。绘制(视图{ 图例:“底部”, allowHtml:是的 }); }

Javascript中的转义字符 函数drawVisualization(){ var query=new google.visualization.query('http://spreadsheets.google.com/tq?key=XXXXXXX'); query.setQuery('选择B、C、D、E、F、G、H,其中上(B)类上(%%)或上(D)类上(%%)或上(E)类上(%%)或上(F)类上(%%),按G描述标签G“数据”排序); 发送(handleQueryResponse); } 函数handleQueryResponse(响应){ if(response.isError()){ 警报('查询中的错误:'+response.getMessage()+'+response.getDetailedMessage()); 返回; } var data=response.getDataTable(); var formatter=新的google.visualization.PatternFormat( ''); //应用格式化程序并设置第一列的格式化值。 格式(数据[0,1,2,3,4,5,6,2]; var view=newgoogle.visualization.DataView(数据); view.setColumns([2,0,1,4,5]);//仅使用第一列创建视图。 可视化=新的google.visualization.Table(document.getElementById('Table'); 可视化。绘制(视图{ 图例:“底部”, allowHtml:是的 }); },javascript,escaping,Javascript,Escaping,这是这个问题感兴趣的小片段: function drawVisualization() { var query = new google.visualization.Query('http://spreadsheets.google.com/tq?key=XXXXXXX'); query.setQuery('SELECT B, C, D, E, F, G, H where upper(B) like upper("%<?php echo $search; ?>%")

这是这个问题感兴趣的小片段:

function drawVisualization() {
    var query = new google.visualization.Query('http://spreadsheets.google.com/tq?key=XXXXXXX');
    query.setQuery('SELECT B, C, D, E, F, G, H where upper(B) like upper("%<?php echo $search; ?>%") or upper(D) like upper("%<?php echo $search; ?>%") or upper(E) like upper("%<?php echo $search; ?>%") or upper(F) like upper("%<?php echo $search; ?>%") order by G DESC label G "Data"');
    query.send(handleQueryResponse);
}

function handleQueryResponse(response) {
    if (response.isError()) {
        alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
        return;
    }

    var data = response.getDataTable();

    var formatter = new google.visualization.PatternFormat(
        '<a href="{6}" target="_blank" onclick="var that=this;_gaq.push([\'_trackEvent\',\'Download archivio materiali\',\'{2}\',this.href]);setTimeout(function(){location.href=that.href;},200);return false;">{2}</a>');
    // Apply formatter and set the formatted value of the first column.
    formatter.format(data, [0, 1, 2, 3, 4, 5, 6], 2);

    var view = new google.visualization.DataView(data);
    view.setColumns([2, 0, 1, 4, 5]); // Create a view with the first column only.

    visualization = new google.visualization.Table(document.getElementById('table'));
    visualization.draw(view, {
        legend: 'bottom',
        allowHtml: true
    });

}
var formatter=new google.visualization.PatternFormat(“”);
它确实可以正常工作(它输出一个带有正确数据的合法锚定),除非文档标题(由变量
{2}
输出)中存在一个类似双引号(“)的字符。锚定语法会出错:

我是否需要使用诸如replace之类的函数来转义/替换双引号?我如何才能做到这一点


尝试替换{2}类似于:

var formatter = new google.visualization.PatternFormat('<a href="{6}" target="_blank" onclick="var that=this;_gaq.push([\'_trackEvent\',\'Download archivio materiali\',\'{2}\',this.href]);setTimeout(function(){location.href=that.href;},200);return false;">{2}</a>');
我已更新您的,并已插入:

var str = 'say: "blabla"';
str = str.replace(/"/g, '\\"');
console.log(str);
//添加包含已处理数据的列
var targetColIdx=data.getNumberOfColumns();//将是添加列的索引
data.addColumn('string');
var sourceColIdx=2;//从列2获取数据
var rowCount=data.getNumberOfRows();//保存为循环条件
var=”;

对于(var rowIndex=0;rowIndexCan)我可以
console.log({2}.replace(/“/g,\\”);
?我不知道谷歌API。我认为变量{2}是从
response.getDataTable()获取的
数据中的某个字段
console.log
只是一个调试输出。你可以用ctrl+shift+k在Firefox中打开控制台。我想
数据[1]
(因为基于0的索引)可以替代{2}。试试
控制台。log(数据)
,打开控制台,单击输出并检查数据结构。我用
var str=data[1]试过了;console.log(str.replace(/“/g,\\”);
但是我得到了
未定义的
。如果我把
console.log(数据)
放进去,我会得到很多数据:可能
数据.getValue(rowIndex,columndex)
数据.setValue(rowIndex,columndex,value)
可能会有帮助。我需要一个正在运行的实时示例来了解更多信息。你能在jsfiddle.net上设置一个吗?你能提供一个包含JavaScript库的运行示例吗?嗨,卡西莫多,这是jsfiddle:请看我答案中的jsfiddle。谢谢!这比我想象的要复杂得多!
// add a column with manipulated data
  var targetColIdx = data.getNumberOfColumns();          // will be the index of added column
  data.addColumn('string');
  var sourceColIdx = 2;                                  // get data from col 2
  var rowCount = data.getNumberOfRows();                 // save for loop condition
  var manipulated = "";
  for(var rowIndex=0; rowIndex<rowCount; rowIndex++)
  { manipulated = data.getValue(rowIndex, sourceColIdx); // get original
    manipulated = encodeURIComponent(manipulated);       // do some manipulation
    data.setCell(rowIndex, targetColIdx, manipulated);   // store in new column
  }

// modificated format: only use uri-encoded column in onclick attribute
  var formatter = new google.visualization.PatternFormat(
    '<a href="{6}" target="_blank" onclick="var that=this;_gaq.push([\'_trackEvent\',\'Download archivio materiali\',\'{'+targetColIdx+'}\',this.href]);setTimeout(function(){location.href=that.href;},200);return false;">{2}</a>');