在CodeIgniter中错误解码的编码HTML字符串

时间:2018-01-24 00:23:56

标签: javascript php html ajax codeigniter

我将包含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

1 个答案:

答案 0 :(得分:0)

尝试

form_data='my_html='+encodeURI(my_html)+'&my_count='+my_count;