表行单击字符串值在 jquery 中显示错误



我使用 json 从 Ajax 中的数据库填充了表。但是在单击编辑按钮时,只有数字字段传递给java脚本函数。但是当我想传递像名称这样的字符串时,base64编码字符串没有传递这是java脚本代码

'<a href="javascript:void(0)" onclick="doGet('+item.pohto+','+item.name+')" > <i class="fas fa-pencil-alt"></i> </a>';

当我单击编辑图标时,它显示以下错误

SyntaxError: missing ) after argument list

但是当我只使用数字值时,它正在工作。

请帮我传递字符串值,如图像,名称

这是因为当item.pohtoitem.name是包含空格的字符串时,你最终会得到这样的东西:

onclick="doGet(value one, value two)"

这是无效的语法。您必须添加引号才能使这些值成为字符串文本。

'<a href="javascript:void(0)" onclick="doGet(''+item.pohto+'', ''+item.name+'')" > <i class="fas fa-pencil-alt"></i> </a>'

您还可以使用字符串模板,这将使其更易于阅读:

`<a href="javascript:void(0)" onclick="doGet('${item.pohto}', '${item.name}')" > <i class="fas fa-pencil-alt"></i> </a>`
item.name

可能为空,请尝试检查 item.name 是否有值

onclick="doGet('+item.pohto+''+item.name ? ','+item.name : ''+')"

可能item.pohtoitem.name为空。 因此,该函数将看起来像doGet('value',)doGet(,'value')

这将被解释为错误的Javascript语法。

您应该在控制台中设置断点并检查实际值的外观。更好的是:创建一个函数,它将获取完整的项目值,并像这样检查对象中所需属性的存在:

function performDoGet(item) {
  if (item['pohto'] && item['name']) {
    doGet(item.pohto, item.name);
  }
  else {
    console.log("Values are missing");
  }
}

并将点击监听器更改为以下内容:

'<a href="javascript:void(0)" onclick="performDoGet(' + item + ')"><i class="fas fa-pencil-alt"></i></a>';

最新更新