Javascript 目标ajax请求后$\u POST上的筛选输入和直接访问之间的差异
我使用Javascript 目标ajax请求后$\u POST上的筛选输入和直接访问之间的差异,javascript,php,jquery,ajax,filter-input,Javascript,Php,Jquery,Ajax,Filter Input,我使用filter\u input(input\u POST,'attribute')和$\u POST['attribute']得到了不同的结果,我不知道为什么会发生这种情况 Post请求由带有JQuery的JavaScript构建发送,如下所示: // type javaScript var formData = { field_a: "valueA", field_b: "", field_c: undefined }; $.ajax({ url: 'serverAddre
filter\u input(input\u POST,'attribute')
和$\u POST['attribute']
得到了不同的结果,我不知道为什么会发生这种情况
Post请求由带有JQuery的JavaScript构建发送,如下所示:
// 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)
}
});
// type php
$requestMethod = INPUT_POST;
$response = [
"fi-result" => filter_input($requestMethod, 'formData'),
"direct-result" => $_POST['formData'];
];
echo json_encode($response);
我的PHP脚本如下所示:
// 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)
}
});
// type php
$requestMethod = INPUT_POST;
$response = [
"fi-result" => filter_input($requestMethod, 'formData'),
"direct-result" => $_POST['formData'];
];
echo json_encode($response);
返回的结果不是我等待的结果,因为通过filter\u input
的访问在我的测试中返回false
,而不是像super-global$\u POST上的直接访问那样的json对象
// type json response
{
"fi_result": false,
"direct-result": {
"field_a": "valueA",
"field_b": ""
}
}
为什么在$POST上使用filter_输入和直接访问之间存在差异
我不想访问超级全球$\u帖子。有没有任何方法可以像上面那样使用filter_输入,而不用在JavaScript中将formData编码为字符串,并在编码后一个简单的步骤在PHP中对其进行解码
顺便说一下。我正在使用TypeScript生成JavaScript。不支持FormData对象(transpiler在
新建FormData()
时抛出错误)。所以我不能用这个。我在PHP文档中找到了答案。POST不是为传输深层对象而构建的。filter_输入法尝试获取简单的数据类型,如string或int。该方法不解析内部数据类型,因此我必须将其作为JSON字符串发送并解码,否则在我的示例中无法使用filter_输入
我选择了第一个,然后立即发送字符串。我在PHP文档中找到了答案。POST不是为传输深层对象而构建的。filter_输入法尝试获取简单的数据类型,如string或int。该方法不解析内部数据类型,因此我必须将其作为JSON字符串发送并解码,否则在我的示例中无法使用filter_输入 我取了第一个,现在发送字符串