gpt4 book ai didi

php - 无法从 Ajax POST 请求将带空格的数据获取到数据库中

转载 作者:可可西里 更新时间:2023-10-31 23:35:17 27 4
gpt4 key购买 nike

我有一个非常简单的表单,带有一个文本框和一个按钮,我的目标是让异步请求(jQuery:$.ajax)将文本发送到服务器(PHP/mysql a la Joomla),以便它可以被添加到数据库表中。

这是从客户端发送数据的 javascript:

var value= $('#myvalue').val();

$.ajax( {
type: "POST",
url: "/administrator/index.php",
data: { option: "com_mycomponent",
task: "enterValue",
thevalue: value,
format: "raw"},
dataType: "text",
success: reportSavedValue
} );

当用户输入带有空格的文本时会出现问题。我收到的 $_POST 变量去掉了所有空格,因此如果用户输入“This string has spaces”,服务器将获得值“Thisstringhasspaces”。

我一直在谷歌搜索,并找到了很多我需要使用 encodeURIComponent 的引用资料。所以我试过了,但现在我从 $_POST 获得的值是“This20string20has20spaces”。

所以它似乎按照期望的方式对其进行编码,只是去除了百分号而不是空格,并保留了十六进制数字。

我真的很困惑。似乎这种问题在网络上随处可见,到处都有 encodeURIComponent 被誉为 Elixir 。但显然我正在与另一种兽化人作战。有人有什么建议吗?

最佳答案

事实证明,我没有意识到我在执行额外的过滤。因为这都是通过 Joomla 运行的,所以我使用的是 JRequest::getCmd('thevalue')而不是 $_POST['theValue] .事实证明,这个函数过滤掉了所有那些麻烦的字符,比如“%”。

所以最终的解决方案是在客户端使用encodeURIComponent,网上一致建议:

var value = encodeURIComponent($('#myvalue').val());

然后在服务器上进行交易getCmd()对于 getVar()结合 urldecode() 可以更好地控制过滤:

$value = urldecode(JRequest::getvar('thevalue', JREQUEST_ALLOWHTML));

再次感谢 Karim79 和 Cesar。我称你为 Harker 和 Helsing——我今天的英雄! :)

关于php - 无法从 Ajax POST 请求将带空格的数据获取到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com