【问题标题】:Special character in AJAX requestAJAX 请求中的特殊字符
【发布时间】:2011-06-09 03:15:43
【问题描述】:

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

...但还是不行。

【问题讨论】:

  • 请清理您的代码并使用代码标签。 //parampost = name=abc&value=+123 应该被注释掉吗?有关系吗?
  • 我对 php 了解不多,但是没有什么办法可以逃避字符吗?
  • 嗨,火柴!谢谢伙计,已经得到了解决方案..我只是把它写出来作为基础:) 我正在使用 encodeURIComponent() 并且它工作正常。谢谢你的回复:)

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


【解决方案1】:

+ 在数字上是多余的;将+123 更改为"+123"

如果您的 JavaScript 库没有转义,也可以使用 encodeURIComponent(value) 而不是 value。所以,你的固定代码应该是:

value = "+123";
paramPost = "name=abc&value=" + encodeURIComponent(value); 

// ..

ajax.doPost(paramPost);

【讨论】:

  • 你好迷你科技!多谢!我现在使用 encodeURIComponent(),它给出了 + 的十六进制值。非常感谢! :D
【解决方案2】:

在 javascript 中,数字前的前导“+”表示它是正数。要将值“+1”作为 URI 查询参数的一部分发送,您需要对其进行转义。 '+1' 的正确转义版本是:

%2B1

其中 %2B 是“+”的十六进制值

【讨论】:

  • 嗨罗布赖施!为此非常感谢!当然,它需要具有“+”的十六进制值。谢谢大哥!
猜你喜欢
  • 1970-01-01
  • 2012-01-16
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2019-10-08
相关资源
最近更新 更多