inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Xây dựng trang web thực tế bằng Python của Tiến sĩ Nam

Tạo bảng tin - Danh sách bài viết

querystring (get방식)으로 파라미터가 숫자라서 false가 됩니다

852

python1828

90 câu hỏi đã được viết

1

선생님 수업 잘듣고 있습니다

다름이 아니라 검색기능 수업중에서

 

select 의 value 와

keyword의 value

 

자바스크립트로 

self.location.href를 이용하여

get방식으로 값을 넘기는 내용이 있습니다

약 48분 정도쯤에 있는 내용이구요

 

select 값의 value를

0, 1, 2, 3, 4 로 설정해놓아서 이중에서 하나의 값을 

넘기는데요

 

get방식으로 넘길때, 숫자가 넘어가는게 아니라

false가 넘어가는데

도저히 해결이 안되네요

 

get방식 값이

http://192.168.1.13:9000/list?search=false&keyword=%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

이렇게 나옴니다

search = 숫자

 

이렇게 나와야 하는데

false가 들어가니 해결이 안되네요

 

영상에는 잘되는데 저는 잘안되서

이후 강의에 있는 선생님이 수업자료로 첨부하신 코드를 

가져와서 실행해도 안됩니다 ㅠㅠ

 

python

Câu trả lời 2

1

nambaksa

console.log(v_value, v_keyword);

self.location.href = "....."

콘솔 log 를 href 하기 전에 먼저 출력해보시고 무슨 값이 찍히는지 확인해보시기 바랍니다.

 

아니면 v_value = String(document.getElementById("search").value);

해서 강제로 문자열로 바꿔보는것도 해보세요.

 

어쨌든 v_value 값은 document.getElementById("search").value;  의 값이니 html 상의 search 에 어떤 value 가 설정되어있는지부터 확인해봐야 할듯 합니다. 그걸 모르니 뭐라고 답변을 드리기가 애매합니다.

0

python1828

console.log(v_value, v_keyword);

출력해보았습니다!

v_value = String(document.getElementById("search").value);

이렇게도 해봤습니다 하지만 안되네요 ㅠㅠ

 

즉 , 

document.getElementById("search").value;

요 값은 잘 가져오는데요

위에 있는 

console.log(v_value, v_keyword); 코드는 -> (0, 파이썬)

아래에 있는

console.log(v_value, v_keyword); 코드는 -> (false, 파이썬)

 

이렇게 값이 틀립니다

 

글로는 잘 설명이 안될테니

이미지 첨부합니다

오렌지색 으로 표기한거 확인 부탁드립니다

 

 

어제부터 별의별짓을 다해봤는데

해결법은 

gg 변수에 담아서, 값을 넘기니 해결되었습니다

 

 

하지만 아직도

왜 위의 v_value 값과

아래 (if , else )안에 있는 v_value값이 틀린지 모르겠습니다

 

알려주신다면 정말 감사하겠습니다.

 

 

0

nambaksa

네 저도 그게 의심스러워서 그 부분을 여쭤본것 입니다. 어떤 이유에서인지 0을 숫자 자체로 인식하지 않고 Boolean 형태로 인식해서 0 == False 로 인식하는거 아닌가? 하는 의심이 들어서 였는데 혹시 그 값이 1, 2, 3 인 경우에는 어떻게 인식하는지도 한번 확인을 해보시는게 좋을듯 합니다. console.log 에서 v_value 값을 출력할때 typeof v_value 해서 v_value의 자료형을 어떻게 인식하는지도 한번 테스트 해보시기 바랍니다.

그래서 그런 의심에 0 값을 강제로 문자열로 변환하면 되지 않을까 했던건데 안되셨다고 하니 그러면 강제로 숫자형태로 형변환을 해보는건 어떨까 합니다.

self.location.href = "{{url_for('lists')}}?search=" + parseInt(v_value) + "&keyword=" + v_keyword;

 

self.location.href = "{{url_for('lists')}}?search=" + String(v_value) + "&keyword=" + v_keyword;

 

위의 코드도 적용이 가능한지도 한번 확인해보시기 바랍니다. 물론 그 전에 v_value 가 어떤 자료형으로 인식했느냐에 따라 안될수도 있을것 같긴 합니다.

0

python1828

console.log(typeof(v_value), typeof(v_keyword))

 

콘솔에 출력해보면

 

if문 전에는 

string  string

 

if문 안에는

boolean string

 

이렇게 나옵니다.

역시 boolean 타입으로 바뀌는게 문제네요

근데 왜 boolean  타입으로 바뀔까요 ㅠㅠ

 

그리고

 

0 말고

1,2,3 도 출력시 boolean 타입으로 출력됩니다.

----------------

그래서

self.location.href = "{{url_for('lists')}}?search=" + parseInt(v_value) + "&keyword=" + v_keyword;

위 코드로 넘기면

이미 v_value는 boolean이라서 NaN 으로 나오고 (boolean 타입에 parseInt를 해서 그런가봅니다)

 

------------------

self.location.href = "{{url_for('lists')}}?search=" + String(v_value) + "&keyword=" + v_keyword;

이걸로 넘기면

String(v_value) 는 false로 나옵니다 ㄷㄷ

 

-------------------

if문 안으로 넣는다고 숫자가 boolean타입으로 변하다니

정말 너무 희안하네요

 

자바스크립트 특성일수도 있겠다는 생각도 들긴하는데,

무조건 그런건지 증명할 길이 없으니 답답하기도 합니다.ㅠㅠ

 

더욱이 선생님께서 수업진행하실때는 이상없이 , 진행되는게 또 마음에 걸리네요 무엇이 문제인건지 

답답하네요 ㅠㅠ

 

----------

참고로  v_value 값을 만들때

let v_value = String(document.getElementById('search').value);  

let v_value = parseInt(document.getElementById('search').value);  

 

위처럼해서 넘겨도

if문 안으로 들어가니

boolean 타입으로 나옵니다 ㅠㅠ

0

nambaksa

혹시 다른 브라우저에서도 한번 테스트 해보시기 바랍니다. 자바스크립트의 엔진은 브라우저에 귀속되어있는 애라서 혹시 궁금하네요.

0

python1828

크롬, 웨일, 엣지, 오페라, 파이어폭스 모두 동일하네요

다른 방법으로 해결이 되었으니, 이 질문은 신경안쓰셔도 될거 같습니다.

나중에 공부하다가 해결책을 알게된다면, 여기에 답글 달겠습니다^^

0

nambaksa

그러게요 제가 더 궁금해서 자꾸 그러나봅니다. ㅎㅎㅎ ^^;;;;

0

thinkyu700252

이거 시간이 좀 지났지만 if 문이 잘못 되어서 그렇네요.

아래와 같이 수정하니 됩니다. == 넣으니 잘 됩니다.

if(v_search == "" || v_keyword == "") {

저도 동일한 실수를 해서 다시보니 == 인데 =를 썻더라구요.

iis 접속후 자동으로 로그인 창이 나오도록 설정이 기능한가요?

0

65

2

리스트 이동 시 창 에러 발생

0

75

1

배포후 회원 등록 후 로그인 에러...

0

73

2

내부 서버 오류

0

67

2

app.config["MONGO_URI"] = "mongodb://localhost:27017/pm_db"

0

53

2

DB 검색하면 데이터가 없습니다. 라고 나와요. 5시간을 찾아봐도 모르겠어서 문의드려봅니다.

0

47

1

몽고db studio3T를 깔았는데

0

57

2

flake8과 linter

0

74

3

500이 뜹니다.

0

57

2

첨부파일 삭제

0

66

2

검색기능 질문

0

61

2

google.py

0

66

2

Studio 3T에 DB insert가 되지 않는 문제를 해결하지 못하고 있습니다 ㅠ

0

82

3

혹시 전체 코드 공개되어 있나요?

0

96

1

join.html 의 form 태그값 을 member_join() 에서 처리못함.

0

103

1

google.py 몽고db 샘플데이터 만들기

0

100

2

flake8 설치 이후 명령팔레트에서 linter가 안보입니다.

0

237

2

파이썬으로 만들어서 웹호스팅에 올릴경우

0

304

1

현재 구글검색 무한스크롤변경 문의합니다

0

297

1

몽고디비아틀라스로 추가 공부해서 올립니다.

0

218

1

IIS 500.19에러

0

659

2

버전 문제도 수정했는데 결과가 안나옵니다.

0

258

1

데이터베이스 저장관련 질문입니다.

0

270

1

test가 생기지 않습니다.

0

509

3