Javascript 如何防止弦在#符号处被切断?
我正在创建一个社交网络,我想加入#hashtag功能…问题是帖子在#处被剪切。例如,如果我写了“Hello#StackOverflow community!”,结果字符串将是“Hello”。下面是代码和调试屏幕截图Javascript 如何防止弦在#符号处被切断?,javascript,jquery,model-view-controller,Javascript,Jquery,Model View Controller,我正在创建一个社交网络,我想加入#hashtag功能…问题是帖子在#处被剪切。例如,如果我写了“Hello#StackOverflow community!”,结果字符串将是“Hello”。下面是代码和调试屏幕截图 $("#btnPostStatus").click(function () { var post = $("#txtNewStatus").val(); $.post('/Logic/postStory?text=' + post.toString() + '', n
$("#btnPostStatus").click(function () {
var post = $("#txtNewStatus").val();
$.post('/Logic/postStory?text=' + post.toString() + '', null, function(result) {
alert(result);
location.reload();
});
});
通过
encodeURIComponent
对其进行正确编码:
'/Logic/postStory?text=' + encodeURIComponent(post)
对于放入URL查询字符串中的任何值,都必须这样做。(事实上,键也应该这样做,但是encodeURIComponent(“text”)
是“text”
,因此您可以不为该特定键以及任何其他由字母和数字组成的键执行此操作。)
还请注意,post
上的.toString()
和+'
都是不必要的
请注意,您在URL中包含
文本参数(例如,类似GET参数),而不是作为POST数据。如果这确实是您想要做的,那很好,但是如果您想要将其包含在POST数据中,则需要将其作为第二个参数提供:$.POST('/Logic/postStory',{text:POST},…)
。(如果将其作为对象传递,jQuery将为您处理URI编码。)发生这种情况是因为URL中的
符号被解释为所谓的。尝试对URL进行如下编码:
$.post('/Logic/postStory?text=' + encodeURIComponent(post.toString()), ...
顺便说一句,您不需要使用+'
。#
应替换为%23
请查看更多详细信息
您可以使用或简单地将代码中的
替换为%23
,对请求进行编码
我建议对整个URL进行编码。如果您想发送实际的POST数据,您需要$.POST('/Logic/postStory',{text:POST},function(result){…})