Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SyntaxError:未终止的字符串文字_Javascript_Html_Ruby On Rails 3_Prototypejs - Fatal编程技术网

Javascript SyntaxError:未终止的字符串文字

Javascript SyntaxError:未终止的字符串文字,javascript,html,ruby-on-rails-3,prototypejs,Javascript,Html,Ruby On Rails 3,Prototypejs,我有下面的代码,在其中我得到了奇怪的错误 function export_to_excel() { results_html = $('report_excel').innerHTML; results_html = '<html><body><table align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan

我有下面的代码,在其中我得到了奇怪的错误

   function export_to_excel()

     {

    results_html = $('report_excel').innerHTML;
    results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
    var input = new Element('input', {
        'type': 'hidden',
        'name': 'results[html]',
        'value': results_html
    });
    var form = new Element('form', {
        'method': 'post',
        'name': 'Employee Salary Register',
        'action': "html_to_excel"
    });
    form.insert(input);
    document.body.appendChild(form);
    form.submit();
}
函数导出到excel()
{
结果_html=$('report_excel')。innerHTML;
结果_html='员工工资登记簿'+结果_html+'';
变量输入=新元素(“输入”{
“类型”:“隐藏”,
“名称”:“结果[html]”,
“值”:结果\u html
});
变量形式=新元素('形式'{
'method':'post',
“姓名”:“员工工资登记簿”,
“操作”:“html\u到\u excel”
});
表格.插入(输入);
文件.正文.附件(表格);
表单提交();
}
错误发生在这一行

results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
results\u html='Employee Salary Register'+results\u html+'';
编辑:

错误显示在Firebug的控制台中,指向该行。我刚刚附加了一个屏幕截图

在那里,您可以看到,在两个按钮(打印和导出)下,代码显示在屏幕上。这些代码行是函数
Export\u to\u excel()

它在我的本地服务器上也能很好地工作。我使用的是PrototypeJS,我很抱歉造成误导,也很抱歉延迟


任何帮助都将不胜感激

只是一个建议:将您的线路从:

results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>'
results\u html='Employee Salary Register'+results\u html+''

results\u html=“员工工资登记簿”+结果\u html+”;
我已将替换为,反之亦然。这可能会删除您的错误。希望如此


注意:由于您在评论中提到$('report\u excel')实际上是您的tableId,因此正确的jquery访问id的方法是$('report\u excel”)使用

我已经实现了下面的代码,它运行良好 首先在这一行中定义您的id/类
results\u html=$('report\u excel')。innerHTML;

function export_to_excel(){

    results_html = $('report_excel').innerHTML;
    results_html = "<html><body><table  align='center' cellspacing='0' cellpadding='0' width='100%'><tr><td colspan='9'><b>Employee Salary Register </b></td></tr><tr><td colspan='9'></td></tr>" + results_html + "</table></body></html>";
    var input = new Element('input', {
        'type': 'hidden',
        'name': 'results[html]',
        'value': results_html
    });
    var form = new Element('form', {
        'method': 'post',
        'name': 'Employee Salary Register',
        'action': "html_to_excel"
    });
    form.insert(input);
    document.body.appendChild(form);
    form.submit();
}
函数导出到excel(){
结果_html=$('report_excel')。innerHTML;
结果_html=“员工工资登记簿”+结果_html+”;
变量输入=新元素(“输入”{
“类型”:“隐藏”,
“名称”:“结果[html]”,
“值”:结果\u html
});
变量形式=新元素('形式'{
'method':'post',
“姓名”:“员工工资登记簿”,
“操作”:“html\u到\u excel”
});
表格.插入(输入);
文件.正文.附件(表格);
表单提交();
}

问题在于结果html内容中的引号

看起来您正在使用jQuery,(1)如果您是:

results_html = $('report_excel').innerHTML;
results_html_container = $('<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
results_html_container.html(results_html);
results\u html=$('report\u excel')。innerHTML;
结果\u html\u容器=$(“员工工资登记簿”+结果\u html+”;
results\uhtml\ucontainer.html(results\uhtml);
2.如果不是:请在内容中转义单引号

   results_html = $('report_excel').innerHTML;   
   results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td
   colspan="9"><b>Employee Salary Register </b></td></tr><tr><td
    colspan="9"></td></tr>' + results_html.replace(/'/g, "\\'"); +
    '</table></body></html>';
results\u html=$('report\u excel')。innerHTML;
结果\u html='Employee Salary Register'+结果\u html.replace(/'/g,“\\”)+
'';
只需执行以下操作:

<script type="text/javascript">
function export_to_excel() {
    var results_html = $('report_excel').html() ? $('report_excel').html() : "";
    results_html = '<html><body><table  align="center" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="9"><b>Employee Salary Register </b></td></tr><tr><td colspan="9"></td></tr>' + results_html + '</table></body></html>';
    var input = new Element('input', {
        'type': 'hidden',
        'name': 'results[html]',
        'value': results_html
    });
    var form = new Element('form', {
        'method': 'post',
        'name': 'Employee Salary Register',
        'action': "html_to_excel"
    });
    form.append(input);
    document.body.appendChild(form);
    form.submit();
}
</script>

函数导出到excel(){
var results_html=$('report_excel').html()?$('report_excel').html():“”;
结果_html='员工工资登记簿'+结果_html+'';
变量输入=新元素(“输入”{
“类型”:“隐藏”,
“名称”:“结果[html]”,
“值”:结果\u html
});
变量形式=新元素('形式'{
'method':'post',
“姓名”:“员工工资登记簿”,
“操作”:“html\u到\u excel”
});
表单。追加(输入);
文件.正文.附件(表格);
表单提交();
}
代码更具可读性,并且使用适当的jQuery而不是导致问题的混合匹配(如您的情况)


我声明了变量,检查元素是否有默认为空字符串的值。通过追加将输入添加到表单中。

解决方案是将javascript代码放入单独的文件中(如exportExcel.js)然后从您的视图中包含该文件。不要使用标记!

我知道我参加聚会迟到了,但我遇到了类似的问题,我将在这里为通过谷歌搜索错误来解决此问题的任何其他人保留我的修复。我正试图包含cdn的本地回退:

<script> //THIS IS WRONG.
window.angular || document.write('<script src="bower_components/angular/angular.min.js"></script>');
</script>
//这是错误的。
window.angular | | document.write(“”);
这引发了相同的未终止字符串文字错误。结果表明,文档写入字符串中的结束脚本标记使解析器出错。只需在带引号的结束标记中转义斜杠即可

<script> //correct version.
window.angular || document.write('<script src="bower_components/angular/angular.min.js"><\/script>');
</script>
//正确的版本。
window.angular | | document.write(“”);

帽子提示:

在Chrome控制台中工作如果你将
结果\u html
更改为不带引号的随机字符串,
结果\u html
是什么样子的?报表\u excel到底是什么?@MrLister:这是我拥有的表的id,并且在上面的代码中使用它将数据导出为xls格式。要清楚,上面的代码是在本地服务器上工作正常,但在客户端它不工作,并且控制台中出现了奇怪的错误。但是文件完全相同…看起来它取决于“report\u excel”内容。顺便说一句,如果使用jQuery,则应将
.innerHTML
更改为
.html()
,如果report_excel是某个元素的id,那么在它前面添加#$(“#report_excel”)。谢谢您的回答,但它的JavaScript不是JQuery@Pavan他提到jQuery的原因是$('')语法在jQuery和Mootools中都有使用,它们都是JavaScript库(所以只需要可重用的JavaScript函数)。看来您正在使用某种库来执行$('')语法。否则,您认为$('')应该做什么,如果您想要原始JavaScript,您需要
document.getElementById('report\u excel')。innerHTML
<script> //correct version.
window.angular || document.write('<script src="bower_components/angular/angular.min.js"><\/script>');
</script>