gpt4 book ai didi

javascript - 目标ajax请求后filter_input和直接访问$_POST之间的区别

转载 作者:行者123 更新时间:2023-11-28 05:06:23 24 4
gpt4 key购买 nike

我使用 filter_input(INPUT_POST, 'attribute')$_POST['attribute'] 得到不同的结果,但不知道为什么会发生这种情况。

Post-Request 由 JavaScript 构建和 JQuery 发送,如下所示:

// type javaScript
var formData = {
field_a: "valueA",
field_b: "",
field_c: undefined
};
$.ajax({
url: 'serverAddress',
data: {action: 99, formData: formData},
dataType: 'json',
method: 'post',
success: function(){
console.log(arguments)
}
});

我的 PHP 脚本看起来像这样:

// type php
$requestMethod = INPUT_POST;
$response = [
"fi-result" => filter_input($requestMethod, 'formData'),
"direct-result" => $_POST['formData'];
];
echo json_encode($response);

返回的结果不是我所等待的,因为在我的测试中通过filter_input的访问返回false,而不是像直接访问的json对象 super 全局$_POST。

// type json response
{
"fi_result": false,
"direct-result": {
"field_a": "valueA",
"field_b": ""
}
}

为什么使用filter_input和直接访问$_POST之间存在差异?

我不想访问 super 全局$_POST。有没有办法像上面一样使用filter_input,而无需在JavaScript中将formData编码为字符串,并在编码后通过简单的一步在PHP中对其进行解码?

顺便说一句。我正在使用 TypeScript 生成 JavaScript。这不支持 FormData 对象(编译器在 new FormData() 上抛出错误)。所以我不能使用这个。

最佳答案

我在 PHP 文档深处找到了答案。 POST 不是为了传输深层对象而构建的。 filter_input 方法尝试获取简单的数据类型,如 string 或 int。此方法不会解析内部,因此我必须将其作为 JSON 字符串发送并对其进行解码,否则我无法在我的情况下使用 filter_input。

我拿了第一个,现在发送字符串。

关于javascript - 目标ajax请求后filter_input和直接访问$_POST之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41717877/

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