我有关于特殊字符输入的问题。首先,考虑+
作为一个特殊的角色,对吗?我的表单中有一个字段,需要能够包含+
。但是,当我使用AJAX将其发送到我的PHP脚本并使用$_POST
访问变量时,+
不会显示,因此不会保存在数据库中。
示例:
// on the JavaScript side
value = +123;
paramPost = "name=abc&value=" + value;
alert("paramPost = " + paramPost);
// Output: parampost = name=abc&value=123
// The + is gone!
// Also, when I change value to a string, the + is still there,
// but when PHP receives it, it's gone.
ajax.doPost(paramPost);
// on the PHP side
$val = $_POST['value'];
echo "val = $val";
// Output: 123
// The + is no longer there!
我该怎么做才能解决这个问题?
我试过了:
$val = htmlspecialchars($_POST['value'], ENT_QUOTES);
......但它仍然无效。
答案 0 :(得分:3)
+
在数字上是多余的;将+123
更改为"+123"
。
如果您的JavaScript库没有逃脱,请同时使用encodeURIComponent(value)
代替value
。所以,你的固定代码应该是:
value = "+123";
paramPost = "name=abc&value=" + encodeURIComponent(value);
// ..
ajax.doPost(paramPost);
答案 1 :(得分:0)
在javascript中,数字前面的前导'+'表示它是正数。要将值“+1”作为URI查询参数的一部分发送,您需要将其转义。正确转义的'+1'版本将是:
%2B1
其中%2B是'+'
的HEX值