【问题标题】:Passing ampersand from JavaScript to PHP/MySQL将 & 符号从 JavaScript 传递到 PHP/MySQL
【发布时间】:2011-11-28 12:15:22
【问题描述】:

我有一个 textarea,我正在使用 JavaScript 检索其值并通过 PHP 脚本发送到 MySQL 数据库(不要问为什么 - 长篇大论和不可避免的解决方案!)。

PHP 脚本会清理输入,但由于某种原因,& 符号永远不会到达所述脚本 - 它还会剔除 & 符号之后的任何信息。

var Reason = $('textarea#txt_reason').val();
Reason = Reason.replace(/&/g,'&');

如果我使用上面的,所有在&符号之后的文本都会被剔除。

var Reason = $('textarea#txt_reason').val();
Reason = Reason.replace(/&/g,'%26');

如果我使用上面的方法,%26 确实会发送到 PHP,从而发送到 MySQL 数据库。

如果我在 PHP 脚本中 var_dump $_GET 请求,则与符号永远不会达到那么远,因此它与 mysql_real_escape_string/htmlentities 等无关。

有没有一种方法可以直接将“&”发送到我的 PHP 脚本,而无需编码/解码?

干杯, 邓肯

【问题讨论】:

  • 你能发布你用来发送Reason到php脚本的代码吗?
  • 你可以使用内置的 Javascript 函数encode(str)。我对 PHP 不太熟悉,但是通常任何从 http 查询字符串中检索值的东西都应该自动解码编码的元素。

标签: javascript ampersand


【解决方案1】:

您使用 Javascript 发送的任何数据都应使用encodeURIComponent() 进行编码。这将处理 &、= 和其他麻烦制造者。数据会自动解码到 $_GET 数组中。

(大多数 Javascript 框架,例如 JQuery 都会为您执行此操作...)

【讨论】:

  • 我认为问题在于:我使用的框架/API 不能正确处理与符号。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 2015-04-10
  • 2012-10-07
  • 1970-01-01
  • 2013-05-15
相关资源
最近更新 更多