我有一个来自 paper-textarea 元素的多行字符串,我试图将其传输到服务器。

我的第一次尝试是像那样将其发送到服务器,但是iron-ajax 剪掉了换行符,大概是因为 json 编码问题。

我的第二次尝试涉及将字符串行拆分为数组的条目,所以让我们看看效果如何。

<iron-ajax  
    ... 
    params={{ajax_new_tag_and_entry}} 
    ... 
</iron-ajax> 

这是更改“ajax_new_tag_and_entry”的函数:

tap_submit_entry : function(){ 
        this.ajax_new_tag_and_entry= 
            { tag : this.journal_tags[this.the_journal_tag].tag, 
                entry : this.the_journal_entry.split("\n") }; 
        console.log(this.the_journal_entry); 
        console.log(this.the_journal_entry.split("\n")); 
    } 

当我执行“console.log(this.the_journal_entry);”时我得到:

One message 
to rule 
them all. 

当我执行 'console.log(this.the_journal_entry.split("\n"));' 时我得到:

Array [ "One message", "to rule", "them all." ] 

但是 Firefox 开发者工具告诉我这是发送到服务器的参数:

tag:"general_message" 
entry:"One message" 
entry:"to rule" 
entry:"them all." 

这显然意味着 xhr 参数的条目被分成三个相同的条目,而不是消息中包含三行的单个条目数组。

如果有人对如何解决此问题有任何想法,我将不胜感激。

请您参考如下方法:

如果要保留换行符,服务器(或数据接收器)最终需要使用商定的格式恢复换行符。

将多行字符串拆分为数组(正如您所做的那样)是一种方法。然后,服务器/接收器将使用换行符加入数组作为反序列化。请注意,在 URL 中具有多个同名查询参数是完全可以接受的,接收者可以将这些参数合并到一个数组中(如 Flask test app 中所示)。

或者,您可以编码(即将 \n 替换为 %0A)或转义(即将 \n 替换为 >\\n) 换行符。然后,服务器/接收器必须对它们进行解码/转义以恢复原始消息。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!