【问题标题】:Javascript writing HTML to page errorJavascript将HTML写入页面错误
【发布时间】:2016-04-24 22:33:08
【问题描述】:

我已经阅读了所有关于“参数列表后未捕获的语法错误:缺少) 的 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();
        }
    }
}

上面是发布方法。

任何人都可以发现任何会导致“参数列表后未捕获的语法错误:缺少)”的内容吗?

我在这个问题上花了几个小时。

谢谢

【问题讨论】:

  • 您在哪里看到这个“未捕获的语法错误”?在“cmets”元素中?
  • 它把它扔到第 2 行,即 html 标记
  • 那是你的实际代码吗?字符串中不能有换行符。
  • html 被写成一个字符串,它们基于 JSON 结果附加到一个 dav
  • 如果您只是在某个浏览器选项卡 url 中键入请求会发生什么? example.com/test.php?type=upcom&text="+text(你的真实文本放在这里而不是文本变量)

标签: javascript html dom


【解决方案1】:

我认为这是问题所在,没有引号:

<button onclick="javascript:publish('+str+');">

所以如果str是“my cmets”,就会产生错误:

<button onclick="javascript:publish(my comments);">

要解决这样的使用:

<button onclick="javascript:publish(\''+str.replace(/\'/g,'\\'') +'\')

所以如果str是“my cmets”,会生成:

<button onclick="javascript:publish('my comments');">

所以如果str是“calmcalmuncle's cmets”,会生成:

<button onclick="javascript:publish('calmcalmuncle\'s comments');">

编辑:

你也需要解决这个问题:

<button onclick="javascript:del(' + "'" + str + "'" + ');">Delete</button>

同样的方式:

<button onclick="javascript:del(\''+str.replace(/\'/g,'\\'');">Delete</button>

【讨论】:

  • 谢谢,确实是空格的问题。你为我节省了很多时间!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多