【问题标题】:passing \n from javascript to python将 \n 从 javascript 传递给 python
【发布时间】:2012-06-11 03:13:47
【问题描述】:

我终于克服了将完整的utf-8 字符串从 javascript 传递到 python 的问题,但是现在在 python 中接收到字符串时缺少 Javascript 端存在的回车 "\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();
}

Comments 是唯一可能有回车的变量。 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

丹尼斯

【问题讨论】:

    标签: javascript python


    【解决方案1】:

    在将数据粘贴到 POST 请求 URL 之前,您似乎没有对数据进行 URL 编码。换行不是唯一可能丢失的东西。当有人在评论字段中输入& 时会发生什么?

    使用encodeURIComponent 解决此问题:

    // ...
    "&Comments=" + encodeURIComponent(commentsText)    // ...
    

    在服务器端,解码这个使用:

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

    【讨论】:

    • Python中怎么解码...有没有类似decodeURIComponent的函数?
    • 由于这最终在 kwargs 中作为分离的元素,没有必要对所有部分都这样做......有吗???
    • @DKean:啊,good question! :-) 使用urllib.unquote(kwargs['Comments']).decode('utf-8')。关于您的第二条评论,通常最好总是转义(因此在服务器端取消转义)everything,以防万一。但在您的情况下,如果您确定唯一可能包含无效字符(所有用户输入都属于此类别)的 URL 变量是评论文本,那么您可以对其进行编码/解码。
    • 我的 Python 安装中没有“lib”。我在哪里可以得到这个库?新蜜蜂
    • @DKean:对不起,我的错。我在输入评论时以某种方式删除了“url”部分;这是urllib
    【解决方案2】:

    在将所有变量连接到 POST 请求之前,对所有变量使用 encodeURIComponent()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 2021-04-16
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 2012-07-28
      相关资源
      最近更新 更多