2012-06-07 47 views
0

我終於克服了從javascript到python傳遞完整utf-8字符串的問題,但現在回車"\n"存在於Javascript端,在Python中接收到字符串時缺少。有什麼我應該做的,以實現這一目標?從javascript到python傳遞 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(); 
} 

評論是唯一可能有回車的變量。在Python端的代碼如下:

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

如何在Python中對其進行解碼...是否有像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