我使用 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.pohto
和item.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.pohto
或item.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>';