我已经阅读了参数列表'之后'未捕获的SyntaxError:缺失'的所有SO帖子,但没有一个能解决这个问题。我不明白出了什么问题。
我正在为数据库返回JSON并为每个结果编写HTML。
function addRow(str, count) {
str = str.substr(0, str.length -5);
document.getElementById("comments").innerHTML += '<br /><br /><div
class="input-group"><span class="input-group-btn"><button class="btn btn-success"
onclick="javascript:del(' + "'" + str + "'" + ');" type="button">Delete</button></span><p class="form-control">'+str+'</p><span class="input-group-btn"><button onclick="javascript:publish('+str+');" class="btn btn-success" type="button">Publish</button>
</span></div>';
}
这是创建HTML的代码。
在点击“发布按钮”之前,我没有收到错误消息。所以我假设这个代码或发布函数有问题。
function publish(text) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","http://example.com/test.php?type=upcom&text="+text,true);
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("comments").innerHTML = "";
loadComment();
}
}
}
以上是发布方法。
任何人都可以在参数列表后发现任何会导致'未捕获的SyntaxError:缺失'的内容吗?
我花了好几个小时来解决这个问题。
由于
答案 0 :(得分:0)
我认为这是问题所在,没有引号:
<button onclick="javascript:publish('+str+');">
因此,如果 str 是“我的评论”,则会产生错误:
<button onclick="javascript:publish(my comments);">
<button onclick="javascript:publish(\''+str.replace(/\'/g,'\\'') +'\')
因此,如果 str 是“我的评论”,则会生成:
<button onclick="javascript:publish('my comments');">
所以如果 str 是“calmcalmuncle的评论”,会产生:
<button onclick="javascript:publish('calmcalmuncle\'s comments');">
你也需要解决这个问题:
<button onclick="javascript:del(' + "'" + str + "'" + ');">Delete</button>
同样的方式:
<button onclick="javascript:del(\''+str.replace(/\'/g,'\\'');">Delete</button>