我将包含html字符串的数据以及来自JavaScript的一些其他数据发布到带有AJAX&的PHP(Codeigniter)服务器。 JSON。
HTML字符串包含带有某些样式数据的图像标记。在服务器上,样式信息消失了!我发布的其他数据都很好。
我应该如何处理HTML字符串以防止这种情况发生?
JavaScript方面:
my_html='<p><img alt="" src="/ckfinder/userfiles/images/ferns.jpg" style="width: 200px; height: 133px;" /></p>';
my_count=1;
这是在AJAX调用中发布的数据:
form_data='my_html='+encodeURIComponent(my_html)+'&my_count='+my_count;
在服务器上:
$html_str=$this->input->post('my_html');
$this->chromephp->log($html_str);
这就是它打印的内容:
<p><img alt="" src="/ckfinder/userfiles/images/ferns.jpg" /></p>
编辑 - 1/24/18 经过更多的调查,这似乎是一个解码问题或我在Codeigniter(v 2)中读取值的方式。与它的图像标签无关。
这是我发现的 -
Javascript:
var hstr ='<p style="color:red;">Hello</p>';
在encodeURIComponent()之后,编码的字符串作为表单数据提交:
%3Cp%20style%3D%22color%3Ared%3B%22%3EHello%3C%2Fp%3E
但是,在服务器中:
(通过AJAX作为表单数据提交的URIencoded字符串: $ html_str = $这 - &GT;输入 - &GT;柱(&#39; hstr&#39); $这 - &GT; chromephp-&GT;日志($ html_str);
的产率:
<p >Hello</p>
在服务器上如果我直接编码()编码字符串
$xx=urldecode('%3Cp%20style%3D%22color%3Ared%3B%22%3EHello%3C%2Fp%3E');
$this->chromephp->log($xx);
的产率:
<p style="color:red;">Hello</p>
当我使用input-&gt; post()时,Codeigniter(v2)是否对其进行解码?有没有办法获得原始未解码的字符串?
有什么建议吗?
帮助!请!
Mmiz
答案 0 :(得分:0)
尝试
form_data='my_html='+encodeURI(my_html)+'&my_count='+my_count;