繁体   English   中英

Iron-ajax尝试通过xhr多行字符串或数组子表达式进行传输

[英]iron-ajax trying to transmit by xhr multiline string or array subexpression

我有一个来自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测试应用中所示 )。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM