2012-05-25 4 views
0

JSON과 Django에서 흥미로운 문제가 있습니다. 나는이 문제를 좁혀 냈다고 생각한다.Django HttpResponse strip 더블 이스케이프의 JSON이 jQuery를 깨뜨림

{"embed": "<iframe width=\\"640\\" height=\\"360\\" src=\\"http://www.youtube.com/embed/Sw5Gk1L4LQE?wmode=opaque\\" frameborder=\\"0\\" allowfullscreen></iframe>"} 

: 나는이 (큰 따옴표 통지)를 얻을 simplejson.dumps으로이를 인쇄하는 경우 PDB에서

{"embed": "<iframe width='640' height='360' src='http://www.youtube.com/embed/Sw5Gk1L4LQE?wmode=opaque' frameborder='0' allowfullscreen></iframe>"} 

: 문제는 내가이 같은 JSON 객체 무언가를 가지고있다 실제 HttpResponse 객체는 이와 같은 이중 이스케이프의 모든 세트에서 하나의 슬래시를 제거했습니다. 내가 jQuery의 parseJSON을 사용하고 내가 탈출로가 볼하지 않는 한 탈출 문자가 하나 (3 일)에 문제가 발생하고 클라이언트에

return HttpResponse(simplejson.dumps(result), 'application/json' 

{"embed": "<iframe width=\"640\" height=\"360\" src=\"http://www.youtube.com/embed/Sw5Gk1L4LQE?wmode=opaque\" frameborder=\"0\" allowfullscreen></iframe>"} 

. 하지만 실제로 유효한 JSON 어디 두 번째로 내가 콘솔에서 직접 parseJSON하려고하지만 그것은 사실 JSONLint.com)에 따라 유효한 JSON되지 않습니다 작동합니다.

이 JSON 객체를 장고에서 클라이언트로 가져오고 임베드 코드를 그대로 유지하려면 어떤 아이디어가 필요합니까? 나는 그것이 내 작은 편이다.

+0

당신이 parseJSON를 사용하는 코드를 표시합니다.의 값을 응답의'embed' 속성은 json이 아니며 문자열입니다 .Json으로 구문 분석 할 가능성이 있습니까? 내 경험에 의하면 Fiddler2와 같은 도구를 사용하여 보내고받는 메시지를 확인합니다. 철사가 침침하다. 루어 블. http://dinochiesa.net/?p=93 – Cheeso

+0

제안 해 주셔서 감사합니다.하지만 여러 가지 일을 잘못 처리하여 매우 혼란스러운 오류 및 디버깅이되었습니다. 나는 내가 모든 것을 깨끗이 정리했다고 믿는다. 당신은 나의 새로운 메시지에서 그것을 볼 수있다. – Fernker

답변

0

좋아, 한 시간이 지난 후에 마침내 나는 이것으로 몇 가지 작은 실수를 저질렀다는 것을 깨달았습니다. 장고를 통해 페이지를 제공하는 대신 페이지를 로컬로로드하고있었습니다 (단지 jQuery Mobile에 대한 작업을 테스트 할 수있었습니다).

로컬 파일에서 나는 장고의 JSON 뷰 출력에서 ​​복사/붙여 넣기를했습니다.

JSONP 호출을 사용하려고했는데 jQuery JSONCallback 때문에 오류가 발생했습니다.

마지막으로 이것을 테스트하는 올바른 방법은 Django를 통해 HTML을 제공하여 JSONP를 사용할 필요가 없도록하고 parseJSON이 단일 이스케이프 된 큰 따옴표 \ "가있는 JSON을 허용하면 가정 복사에서 수용하고 그 응답 객체가 아닌 이후에 붙여 넣기하지 않습니다.

을 희망 내 실수가 미래에 다른 사람을 도움이 될 것입니다.

관련 문제