Я заполнил таблицу из базы данных в Ajax, используя json. Но при нажатии кнопки редактирования только числовое поле передается функции java-скрипта. Но когда я хочу передать строку, такую как имя, строка base64Encoding не передается Вот код 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
Но когда я использую только числовое значение, оно работает.
Пожалуйста, помогите мне передать строковое значение, такое как изображение, имя
@guradio я хочу, чтобы имя и фото передавали значение функции doGet
Похоже на опечатку. вы пропускаете фото вместо Фото?
возможно item.pohto
или item.name
пусто. поэтому функция будет выглядеть как doGet('value',)
или doGet(,'value')
.
Это будет интерпретировано как неправильный синтаксис Javascript.
Вы должны установить точку останова в консоли и проверить, как выглядят фактические значения. Еще лучше: создайте функцию, которая будет принимать полное значение элемента и проверять наличие необходимых атрибутов в объекте для себя, например:
function performDoGet(item) {
if (item['pohto'] && item['name']) {
doGet(item.pohto, item.name);
}
else {
console.info("Values are missing");
}
}
и измените свой кликлистер на следующий:
'<a href = "javascript:void(0)" onclick = "performDoGet(' + item + ')"><i class = "fas fa-pencil-alt"></i></a>';
Это потому, что когда 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 : ''+')"
onclick = "doGet('+item.pohto+'","'+item.name+')"
?