Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 目标ajax请求后$\u POST上的筛选输入和直接访问之间的差异_Javascript_Php_Jquery_Ajax_Filter Input - Fatal编程技术网

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_输入

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