2012-06-07 2 views
0

자바 스크립트에서 파이썬으로 전체 utf-8 문자열을 전달하는 문제를 마침내 극복했지만 파이썬에서 문자열을 수신하면 자바 스크립트 측에있는 캐리지 리턴 "\n"이 누락되었습니다. 이것을 달성하기 위해 내가해야 할 일이 있습니까? n을 자바 스크립트에서 파이썬으로 전달합니다

function saveMeetingComments(){ 
    var komments = $('#cmt_t').val() 
    var d = new Date(); 
    var commentsText = $('#cmt_t').val() 
    var abc = '' 
    var request = par_makeHttpObject(); 
    commentsText = stringTranslate(commentsText,"'",'`'); 
    request.open("POST", "saveMeetingNote?clientID="+clid_+ 
      "&co_ID="+coid_+ 
      "&msgDate="+dateFormat(d, "dddd, mmmm dS, yyyy, h:MM TT")+ 
      "&MeetType="+AGM_+ 
      "&MeetDate="+meetdate+"-"+ 
      "&Comments="+commentsText , false); 
    request.send(); 
    $('#cmt_t').val(''); 
    parkAll(); 
} 

의견은 캐리지 리턴이있는 유일한 변수입니다.

def saveMeetingNote(self, **kwargs): 
    clientID   = kwargs['clientID'] 
    co_ID   = kwargs['co_ID'] 
    MessageDate  = kwargs['msgDate'] 
    MeetingType  = kwargs['MeetType'] 
    MeetingDate  = kwargs['MeetDate'] 
    Comments_  = kwargs['Comments'] 
    coName = dennislib.CompanyCoID2NAME(co_ID)[0]['FName'] 
    ret = dennislib.saveMeetingNotes(clientID,co_ID,MessageDate,MeetingType,MeetingDate,Comments_,coName) 
    return 
saveMeetingNote.exposed = True 
의 검사 Comments_가 \n 모두 사라 것을 알 수

...

TIA

데니스

답변

5

POST 요청 URL에 고정하기 전에 데이터를 URL 인코딩하지 않은 것처럼 보입니다. 줄 바꿈 만이 잃어 버릴 수있는 것이 아닙니다. 어떤 사람이 댓글 입력란에 &을 입력하면 어떻게됩니까?

사용 encodeURIComponent이 문제를 해결하려면 :

서버 측에
// ... 
"&Comments=" + encodeURIComponent(commentsText) // ... 

는이 사용을 디코딩 :

import urllib 
# ... 
Comments_ = urllib.unquote(kwargs['Comments']).decode('utf-8')) 
+0

어떻게 파이썬에서 디코드합니까 ... decodeURIComponent와 같은 함수가 있습니까? – DKean

+0

이것은 kwargs에서 분리 된 요소로 끝나기 때문에 모든 부분에이 작업을 수행 할 필요가 없습니다 ... 거기에 ??? – DKean

+0

@DKean : 아, [좋은 질문] (http://stackoverflow.com/q/946170/21475)! :-)'urllib.unquote (kwargs [ 'Comments']). decode ('utf-8')'를 사용하십시오. 두 번째 설명에 대해서는 일반적으로 항상 이스케이프 (따라서 서버 측에서 이스케이프 처리) * 모든 것을 *하는 것이 좋습니다. 그러나 잘못된 문자 (모든 사용자 입력이이 범주에 해당)를 포함 할 수있는 유일한 URL 변수가 주석 텍스트 인 경우에는 인코딩/디코딩 할 수 있다고 확신 할 수 있습니다. – Cameron

1

사용 encodeURIComponent()을 모든 변수에 다음과 같이 파이썬 측면에서 코드입니다 그들을 POST 요청으로 연결하기 전에.

+0

너무 당신의 도움을 주셔서 감사합니다! – DKean

관련 문제