2016-08-16 5 views
1

私はそうのようにTwitterへJSONメッセージの出力を送信しようとしています:出力でエンコードされた文字を避けるためにJSON要素のコンテンツからURLを構築する正しい方法は何ですか?

  $.getJSON(
 
      'http://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1&callback=', 
 
      'json', 
 
      function(data) { 
 
      $("#quote-content").html(data[0].content + "<br> --" + data[0].title); 
 
      tweetText = data[0].content.replace(/<\/?[^>]+>/gi, ''); 
 
      url = "https://twitter.com/intent/tweet?text=" + '"' + tweetText + '"'; 
 
      console.log(url); 
 
      $('#tweet').attr("href", url); 
 
     } 
 
    );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

などの単一引用符としてデータ内に存在する文字が(あった場合に問題があり、このようにアポストロフィ)、ダッシュ、または二重引用符、コンテンツのカットオフ:

元の文字列:

ほとんど前夜すべての外部の期待、すべての誇り、 の恥ずかしさや失敗のすべての恐怖 - これらのものはちょうど の顔に落ちて、本当に重要なものだけを残す。

ツイートは最初の未処理の文字でカットオフ:================

「ほとんどすべて

Screenshot Here

========================================== ======

この問題を修正するために、私は変更を試みました:

url = "https://twitter.com/intent/tweet?text=" + '"' + tweetText + '"';

url = "https://twitter.com/intent/tweet?text=" + '"' + encodeURIComponent(tweetText) + '"';

に今、出力は次のようなものです:

元の文字列:

何かの作成についての最もよい事は、それはそれはの生活を開始するということですown l ife。

ツイート内テキストは完全に表示するが、エンコードされた文字を示している。

Screenshot here

申し訳ありませんが、私はスタックオーバーフローが実際に文字を正しくエスケープされたので、スクリーンショットを投稿していました!

私の質問は、引用符をTwitterに送信するときに、元のテキスト(すべての文字付き)を表示するにはどうすればよいですか?

ありがとうございました!

答えて

1

私はこれでその周りになった:

var elem = document.createElement('textarea'); 
      elem.innerHTML = tweetText; 
      tweetText = elem.value; 

基本的には、テキストはAPIからエンコードHTMLとして送信されたので、私はURLを構築する前に、それをデコードしなければなりませんでした。