AJAX请求中的特殊字符

时间:2011-06-09 03:15:43

标签: php javascript ajax special-characters http-post

我有关于特殊字符输入的问题。首先,考虑+ 作为一个特殊的角色,对吗?我的表单中有一个字段,需要能够包含+。但是,当我使用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);

......但它仍然无效。

2 个答案:

答案 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值