JSON에서 잠재적으로 "거짓" 입력을 처리하는 방법은 무엇입니까? 대안에 대한 논의
P粉161939752
P粉161939752 2023-09-10 09:35:21
0
2
569

가정 선택 여부에 관계없이 선택된 authorities(但如果存在,我希望选择它们)。如果没有选中的authorities,我希望jQuery选择authorities가 있는지 확실하지 않습니다(실제로는 숨겨진 입력 값을 검색한다는 의미). 이 상황을 처리하기 위해 JS의 "참 값"/"거짓 값" 개념을 사용하는 것에 대한 내 생각은 다음과 같습니다.

으아악

그러나 작동하지 않습니다. 흥미롭게도 아래 코드 조각에서는 작동합니다. val()在匹配失败时返回的undefined不是“假值”吗?想想看!我最好的猜测是,当解析undefined时,JSON.parse()가 제가 바라는 "거짓 값"을 반환하는 대신 오류를 발생시킬 수 있을까요? 이 방법은 "param OR param"을 허용하지 않습니다. 그렇죠?

이 상황에 대한 폴백 을 어떻게 제공해야 한다고 생각하시나요? (물론 선택한 authorities의 "거짓 값"을 개별적으로 확인하는 것이 약간 장황합니다.)

 

<头>
<元字符集=“UTF-8”>


<标题>관리페이지

<正文>
<标题> 이름 학과 이메일 <正文>

양식을 작성해주세요

<表格>
<标签=“名称”>이름:
<脚本> $(문서).ready(함수() { $('form').on('submit', 비동기 함수(이벤트) { event.preventDefault(); $('tbody').append( `` ); const SubmitButton = $(this).find('[type=submit]'); 상수 형식 = $(this); 제출 버튼.removeClass('btn-primary') .addClass('btn-성공') .attr('value', '사용자가 추가되었습니다!') .attr('유형', '버튼') .click(() => $('[href="#users-table"]').tab('show')); setTimeout(함수(){ commitButton.removeClass('btn-성공') .addClass('btn-기본') .attr('값', '제출') .attr('유형
P粉161939752
P粉161939752

모든 응답(2)
P粉818306280

문제는 선택기가 일치하는 항목을 찾지 못하면 .val()返回undefined,而JSON.parse(undefined) 예외가 발생한다는 것입니다.

JSON.parse() 인수 목록에서 폴백을 실행하면 성공적으로 얻은 값을 구문 분석할 수 있습니다.

으아악
P粉561323975

사용 방법에 따라 몇 가지 옵션이 있습니다:

  1. 이렇게 결합할 수 있습니다JSON.parse。这将使它在解析之前回退到其他字符串,因此如果第一个值是undefined,它不会出错。但是,如果两个值都是undefined. 아니면 그 중 하나가 잘못된 JSON이므로 오류가 발생합니다.
으아악
  1. 값이 유효한 JSON이거나 undefined,您可以回退到nullnull유효한 JSON 값임을 알고 있는 경우 구문 분석할 수 있습니다. 그러나 값 중 하나라도 잘못된 JSON이 있으면 오류가 계속 발생합니다.
으아악
  1. 둘 중 하나의 값이 잘못된 JSON일 가능성이 있는 경우 해당 값을 try/catch 블록으로 묶을 수 있습니다. 이렇게 하면 유효하지 않은 경우에도 오류가 발생하지 않습니다. 이것은 가장 안전한 선택이며 결코 잘못되지 않을 것입니다.
으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
미국 에너지부 IT john_d@gmail.com
제인 미국 에너지부 인사 jane_d@gmail.com
${$(this).find('[name=name]').val()} ${$(this).find('[name=성]').val()} ${$(this).find('[name=department]').val()} ${$(this).find('[name=email]').val() || '해당 사항 없음'}