我在后端使用jquery / ajax和PHP发布数据。问题在于,当我输入类似'Jack& amp;吉尔上山时“我才接到'杰克'到达后端。
我在发送数据之前在前端抛出了一个错误,警告'杰克&吉尔上山了。
当我将die(print_r($_POST));
放在索引页的最顶部时,我只会[key] => Jack
如何丢失数据?
我以为它可能是我的过滤器;
<?php
function filter( $data ) {
$data = trim( htmlentities( strip_tags( mb_convert_encoding( $data, 'HTML-ENTITIES', "UTF-8") ) ) );
if ( get_magic_quotes_gpc() ) {
$data = stripslashes( $data );
}
//$data = mysql_real_escape_string( $data );
return $data;
}
echo "<xmp>" . filter("you & me") . "</xmp>";
?>
但在我添加you & me
之后的die(print_r($_POST));
上面的测试中返回正常。
任何人都可以想到这种情况发生的原因和原因吗?
任何帮助非常感谢。
答案 0 :(得分:2)
您很可能无法对数据进行URL编码。 &
字符分隔提交的表单数据中的键值对。
答案 1 :(得分:1)
POST数据通过HTTP标头以与网址中的GET数据类似的形式发送。例如,数据可能看起来像var1=value1&var2=value2&var3=value3
。可以想象,如果数据本身包含&符号,那么该格式的效果不会太好。确切地说,问题在于您如何提交数据。
要在帖子数据中使用&符号(或在网址中使用&amp;),它们必须是“urlencoded”,这意味着您必须使用%26
作为&
字符。所以,问题并不是你的PHP,而是发送数据。它没有正确编码值。
答案 2 :(得分:0)
在javascript端使用encode()或escape()
答案 3 :(得分:0)
在Javascript结尾,您应该使用escape()
。
在PHP端,该函数名为urlencode()
。