Supposons que je ne sois pas sûr qu'il y ait des authorities
(但如果存在,我希望选择它们)。如果没有选中的authorities
,我希望jQuery选择authorities
sélectionnés, qu'ils soient sélectionnés ou non (en fait, cela signifie récupérer la valeur de l'entrée masquée). Mes réflexions sur l'utilisation du concept "vraie valeur"/"fausse valeur" de JS pour gérer cette situation sont les suivantes :
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()) };
Cependant, cela ne fonctionne pas. Fait intéressant, cela fonctionne dans l'extrait de code ci-dessous. Se pourrait-il que val()
在匹配失败时返回的undefined
不是“假值”吗?想想看!我最好的猜测是,当解析undefined
时,JSON.parse()
génère une erreur au lieu de renvoyer une "fausse valeur" que j'espère. Cette méthode n'accepte pas "param OR param", n'est-ce pas ?
Comment pensez-vous que je devrais fournir une solution de repli pour cette situation (en plus, bien sûr, de vérifier la "fausse valeur" des authorities
sélectionnés individuellement, ce qui est un peu verbeux à mon goût) ?
<头>
<元字符集=“UTF-8”>
<标题>Page de gestion标题>
头>
<正文>
<标题>
Nom
Nom de famille
Département
E-mail
标题>
<正文>
Jean
Département américain de l'énergie
IT
john_d@gmail.com
Jane
Département américain de l'énergie
Ressources humaines
jane_d@gmail.com
表>
Remplissez le formulaire
<表格>
<标签=“名称”>Nom : 标签>
形式>
<脚本>
$(document).ready(function() {
$('form').on('submit', fonction asynchrone (événement) {
event.preventDefault();
$('tbody').append(
`
${$(this).find('[name=name]').val()}
${$(this).find('[name=last-name]').val()}
${$(this).find('[name=department]').val()}
${$(this).find('[name=email]').val() || 'Non applicable'}
`
);
const SubmitButton = $(this).find('[type=submit]');
Forme constante = $(this);
Soumettre le bouton.removeClass('btn-primary')
.addClass('btn-succès')
.attr('value', 'L'utilisateur a été ajouté !')
.attr('type', 'bouton')
.click(() => $('[href="#users-table"]').tab('show'));
setTimeout(fonction(){
commitButton.removeClass('btn-succès')
.addClass('btn-primaire')
.attr('valeur', 'soumettre')
.attr('type
Le problème est que si le sélecteur ne trouve aucune correspondance,
.val()
返回undefined
,而JSON.parse(undefined)
il lève une exception.Exécutez la solution de secours dans la liste d'arguments de
JSON.parse()
afin d'analyser toute valeur obtenue avec succès.En fonction de votre utilisation, vous disposez de plusieurs options :
JSON.parse
。这将使它在解析之前回退到其他字符串,因此如果第一个值是undefined
,它不会出错。但是,如果两个值都是undefined
ou l'un d'entre eux est un JSON invalide, ce qui provoquera une erreur.undefined
,您可以回退到null
。null
une valeur JSON valide, elles peuvent être analysées. Cependant, si l'une des valeurs JSON n'est pas valide, une erreur se produira toujours.