Ich habe eine Datentabelle, die Daten von einer API anfordert. Ich erhalte ein Objekt namens full, das alle Variablen aus der Datenbank enthält. Ich kann problemlos auf Ganzzahlen zugreifen und sie bei einem Klick auf eine Schaltfläche von einer Funktion übergeben, aber eine Zeichenfolge bringt einen Fehler mit der Aufschrift Uncaught SyntaxError: missing ) nach dem Argument
<script>
$(document).ready(function () {
$("#datatable").DataTable({
"processing": true,
"serverSide": true,
"filter": true,
"ajax": {
"url": '@TempData["api"]api/Versioning/Review',
headers: {
'Authorization': 'Bearer @HttpContextAccessor.HttpContext.Session.GetString("token")'
},
"type": "GET",
},
"columnDefs": [{
"targets": [0],
"visible": false,
"searchable": false
}],
"columns": [
{ "data": "name", "name": "Name", "autoWidth": true },
{ "data": "name", "name": "Name", "autoWidth": true },
{
data: "created_at",
"render": function (value) {
if (value === null) return "";
return moment(value).format('DD/MM/YYYY');
}
},
{
"render": function (data, type, full, meta) {
return '<button onclick="changes('+full.changes+')" class="btn btn-info"><i class="fas fa-info-circle"></i> Changes</button>';
}
},
{
"render": function (data, type, full, meta) {
return "<button id='remove' onclick='approve("+full+")' class='btn btn-success'><i class='fas fa-check-circle'></i> Accept Version</button>";
}
},
{
"render": function (data, type, full, meta) {
return "<button id='deny' onclick='deny(" + full.id + ")' class='btn btn-danger'><i class='fas fa-minus-circle'></i> " + full.changes + "</button>";
}
},
]
});
});
<script/>
Oben fordere ich die Daten an und ich kann die vollständigen Änderungen an meiner Funktion nicht erhalten und ich kann sie nicht einmal protokollieren. Aber wenn ich eine ID übergebe, funktioniert es und ich kann es protokollieren. Ich habe auch versucht, das vollständige Objekt vollständig zu übergeben und dann in meiner Funktion wie full.changes darauf zuzugreifen, aber es funktioniert immer noch nicht. Unten ist meine Funktion
<script>
function changes(changes) {
console.log(changes)
}
</script>
Grundsätzlich möchte ich die Variable namens Änderungen protokollieren, die sich im vollständigen Objekt befindet, aber bisher keinen Erfolg hat. Weiß jemand, wie ich es bestehen kann?
Lösung des Problems
Sie sollten ein String-Literal in Ihrem HTML in Anführungszeichen setzen. Sie fehlen.
Also ersetze das:
return '<button onclick="changes('+full.changes+')" class="btn btn-info"><i class="fas fa-info-circle"></i> Changes</button>';
Mit
return '<button onclick="changes(\''+full.changes+'\')" class="btn btn-info"><i class="fas fa-info-circle"></i> Changes</button>';
Machen Sie ähnliche Dinge (mit dem entsprechenden Anführungszeichen und Escapezeichen) in den anderen Fällen.
Keine Kommentare:
Kommentar veröffentlichen