2016-05-27 2 views
0

私は、サーバに送信しようとしている紙のtextarea要素からの複数行の文字列を持っています。xhrの複数行の文字列または配列の部分式で送信しようとしているiron-ajax

私の最初の試みは、それをサーバーに送信することでしたが、iron-ajaxは、おそらくjsonのエンコードの問題のために改行文字を切り捨てます。

私の2番目の試みは、文字列の行を配列の項目に分割することです。

<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の開発ツールは、これはサーバーに送信されたパラメータであることを教えてください:私が得るこれは明らかにそのエントリがXHRパラメータのために3つの同一のエントリに分割されたことを意味し

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

誰もが、私はこの問題を解決することができる方法上の任意の考えを持っている場合、代わりにメッセージ内の3行から1つの項目配列であることの。

私はそれをお願い申し上げます。

答えて

1

改行を保持する場合、サーバー(またはデータ受信者)は最終的に合意した形式で改行を復元する必要があります。

複数行の文字列を配列に分割することは、これを行う1つの方法です。サーバ/レシーバは、デシリアライゼーションとして配列に改行を追加します。受信者が配列にマージできるURLには、同じ名前の複数のクエリパラメータを持つことが完全に容認されていることに注意してください(このFlask test app参照)。

代わりに、エンコードすることができ(すなわち、%0A\nを置き換える)または(すなわち、\\n\nを置き換える)改行をエスケープします。次に、サーバー/受信者は元のメッセージを復元するために、サーバーをデコード/エスケープしなければなりません。

関連する問題