从JSON元素的内容构造URL以避免输出中出现编码字符的正确方法是什么?
What is the correct way to construct a URL from the content of a JSON element to avoid encoded characters in output?
我正在尝试将JSON消息的输出发送到Twitter,如下所示:
$.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>
问题是,当数据中存在一个字符,如单引号(撇号)、破折号或双引号时,内容会像这样被截断:
原始字符串:几乎所有的一切——所有的外在期望,所有的骄傲,所有的恐惧尴尬或失败——这些事情在你面前就会消失死亡,只留下真正重要的东西。
Tweet截断第一个未处理字符:
"几乎所有
截图在这里
========================================================================
为了纠正这个问题,我试着改变:
url = "https://twitter.com/intent/tweet?text=" + '"' + tweetText + '"';
url = "https://twitter.com/intent/tweet?text=" + '"' + encodeURIComponent(tweetText) + '"';
现在输出如下:
原始字符串:创造的最好的事情是它开始自己生活生活。
Tweet文本现在完全显示,但显示编码字符:
截图在这里
对不起,我不得不发布一个截图,因为Stack Overflow实际上是正确转义字符!
我的问题是,当发送报价到Twitter时,我如何获得原始文本(所有字符)来显示?
谢谢你的帮助!
我这样做了:
var elem = document.createElement('textarea');
elem.innerHTML = tweetText;
tweetText = elem.value;
基本上,文本是作为API编码的HTML发送的,所以我必须在构建URL之前解码它。
相关文章:
- 匹配某个字符后所有文本的正则表达式是什么
- 逃离这些字符的目的是什么?[来自Javascript和JQuery书]
- 带有前导散列字符的ajax提交的目的是什么
- 评论的含义是什么;Go Horse'在编码方面?这是某种过程吗
- 使用JS找出字符串中字符重复的最简单方法是什么
- 通过字符串最有效的方法是什么;s字符
- 在Javascript中下划线字符(_)的用途是什么
- 对区间[1,10^12]中的整数进行编码/解码的快速有效方法是什么
- 将字符串解析为一系列转义十六进制字符的方法是什么
- 在MySQL,PHP或一般情况下排序时字符的优先级是什么
- jQuery中的“#”字符(数字符号)是什么意思?
- google_tag_params的意义是什么——为什么我要编码两次
- 这是什么编码
- 使用angularJS将json模板编码为html的方法是什么
- 对 URI 组件非 utf-8 字符进行编码并相应地解码它们的正确方法是什么
- 在 JavaScript 字符串数组中获取相邻字符的最佳方法是什么?
- AngularJS中$interpolate内字符串的转义字符是什么
- FormData的正确编码类型是什么?
- 这个.net编码类型是什么?
- 从JSON元素的内容构造URL以避免输出中出现编码字符的正确方法是什么?