2012-05-07 3 views
0

나는 아래의 구조와 여러 관심 장소의 객체를 포함하는 자바 스크립트 배열 allPois 있습니다JAVASCRIPT + JSON에서 HTML을 인코딩하고 PYTHON에서 디코딩하는 올바른 방법은 무엇입니까?

var poi = { 
     title: pois[x].title, 
     lat: pois[x].position.lat(), 
     lng: pois[x].position.lng(), 
     html: pois[x].html 
    }; 

이 내 서버에 호출하는 자바 스크립트 함수입니다 : 서버 측 기능

function save(){ 

    var jsonizedData = JSON.stringify({theArray:allPois}); 

    jQuery.ajax({ 
     type:  'POST', 
     url:  'http://localhost:8000/save', 
     contentType:'application/json; charset=utf-8', 
     dataType: 'json', 
     data:  mydata, 
     async:  true 
    }); 
} 

입니다 그 요청 처리 : 매개 변수 'HTML'을 디코딩/인코딩하는 가장 좋은 방법은 무엇

def save(request): 
    for object in request.POST: 
     my_data = simplejson.loads(object) 

    return none 

(즉, 실제로 HTML 공동 포함 de) 서버에 제대로로드 될 수 있도록?

+0

'pois [x] .html'에 값을 할당하는 코드를 보여주십시오. 특히 어떤 jQuery 함수를 사용하고 있습니까? –

+0

pois [x] .html은 html을 작성/편집하는 데 사용되는 텍스트 영역의 값으로 채워집니다. 여기서는 사용 된 JQuery 함수가 없습니다. pois [x] .html = myTextArea.value; – Miki

답변

0

.html의 값이 string이므로 아무 것도 할 필요가 없습니다. JSON은 문자열 값을 모두 처리 할 수 ​​있습니다. 당신에 의한 수정은 상황을 악화시킬뿐입니다.

아마도 문제는 텍스트 영역에서 값을 얻는 방법 일 것입니다. See this jsfiddle how special characters are handled.

하지만 최신 브라우저에서는 어떤 단계에서도 인코딩/디코딩이 필요하지 않습니다.

아, XSS and other attacks을 피하기 위해 HTML을 깨끗이해야합니다.

+0

속성 .html이 실제로 HMTL 코드를 포함하면 simplejson.loads (object) 함수가 실패합니다. 예 : art"}, { "제목": "POI B", "lat": 40.5507793, " lng": - 110.89104739999999, "html": "End"} ]}} '>}}> simplejson.loads가 실패하게 만든다. 라인 1 열 80 (char 80) – Miki

+0

에서 시작하는 종결되지 않는 문자열 내 자바 스크립트 코드에서 JSON.stringify를 사용하기 전에 HTML을 인코딩해야한다. – Miki

+0

아니요. 올바른 방법으로 HTML을 가져와야합니다. 'St art "는 HTML이 아니며, HTML과 유사하지만'src '는 무엇인지 의미하는 임의의 텍스트입니다 :' '이어야합니다. 그 문자열은 어디에서 왔습니까? 파이썬을 텍스트 영역에 타이핑하는 대신 파이썬을 사용하여 만든 것처럼 보입니다. –

관련 문제