Angenommen, ich bin mir nicht sicher, ob es authorities
(但如果存在,我希望选择它们)。如果没有选中的authorities
,我希望jQuery选择authorities
s gibt, die überprüft werden, unabhängig davon, ob sie ausgewählt sind (eigentlich bedeutet dies, den Wert der versteckten Eingabe abzurufen). Meine Gedanken zur Verwendung des „wahren Werts“/„falschen Werts“-Konzepts von JS zur Bewältigung dieser Situation sind:
let user = { id: $(this).find('[name=id]').val(), username: $(this).find('[name=username]').val(), password: $(this).find('[name=password]').val(), name: $(this).find('[name=name]').val(), lastName: $(this).find('[name=lastName]').val(), department: $(this).find('[name=department]').val(), salary: $(this).find('[name=salary]').val(), age: $(this).find('[name=age]').val(), email: $(this).find('[name=email]').val(), enabledByte: $(this).find('[name=enabledByte]').val(), authorities: JSON.parse($(this).find('[name=authorities]:checked').val()) || JSON.parse($(this).find('[name=authorities]').val()) };
Es funktioniert jedoch nicht. Interessanterweise funktioniert es im folgenden Codeausschnitt. Könnte es sein, dass val()
在匹配失败时返回的undefined
不是“假值”吗?想想看!我最好的猜测是,当解析undefined
时,JSON.parse()
einen Fehler auslöst, anstatt einen „falschen Wert“ zurückzugeben, was ich hoffe. Diese Methode akzeptiert kein „param OR param“, oder?
Wie sollte ich Ihrer Meinung nach einen Fallback für diese Situation bereitstellen (außer natürlich, den „falschen Wert“ der ausgewählten authorities
einzeln zu überprüfen, was für meinen Geschmack etwas ausführlich ist)?
<头>
<元字符集=“UTF-8”>
<标题>Verwaltungsseite标题>
头>
<正文>
<标题>
Name
Nachname
Abteilung
E-Mail
标题>
<正文>
John
US-Energieministerium
ES
john_d@gmail.com
Jane
US-Energieministerium
Personalwesen
jane_d@gmail.com
表>
Füllen Sie das Formular aus
<表格>
<标签=“名称”>Name: 标签>
形式>
<脚本>
$(document).ready(function() {
$('form').on('submit', asynchrone Funktion (Ereignis) {
event.preventDefault();
$('tbody').append(
`
${$(this).find('[name=name]').val()}
${$(this).find('[name=last-name]').val()}
${$(this).find('[name=Abteilung]').val()}
${$(this).find('[name=email]').val() || 'Nicht zutreffend'}
`
);
const SubmitButton = $(this).find('[type=submit]');
Konstante Form = $(this);
Senden button.removeClass('btn-primary')
.addClass('btn-success')
.attr('value', 'Benutzer wurde hinzugefügt!')
.attr('type', 'button')
.click(() => $('[href="#users-table"]').tab('show'));
setTimeout(function(){
commitButton.removeClass('btn-success')
.addClass('btn-primary')
.attr('value', 'submit')
.attr('Typ
问题在于如果选择器找不到任何匹配项,
.val()
返回undefined
,而JSON.parse(undefined)
会引发异常。在
JSON.parse()
的参数列表中执行备用方案,这样您将解析成功获取的任何值。根据您的使用情况,您有几个选项:
JSON.parse
。这将使它在解析之前回退到其他字符串,因此如果第一个值是undefined
,它不会出错。但是,如果两个值都是undefined
或其中一个是无效的JSON,这将导致错误。undefined
,您可以回退到null
。null
是一个有效的JSON值,可以解析。但是,如果任何一个值是无效的JSON,仍然会出错。