我正在尝试使用Axios发送数据:
axios.post( url,JSON.stringify({'i': '90'}))
.then(function (response) {
console.log(response);
});
并在服务器上获取它:
var_dump(($this->input->post())); // Returns an array | $_POST
对于上述JSON值,我得到以下响应:
array(2){ [“ {” i“:” 90“}”] => 字符串(0)“” [0] => 字符串(0)“” }
没有JSON.stringify
的情况下,来自var_dump(($this->input->post()));
或$_POST
的结果为空数组。
如何通过Axios发送POST
带有JSON数据的请求,并通过PHP在服务器上获取它?
答案 0 :(得分:1)
我遇到了同样的问题,最终发现是由于XSS过滤, 使用
$i = $this->input->post("i",false);
并且在axios中使用
var formdata=new FormData();
formdata.append("key",value);
this.axios.post("http://URL",formdata).then(res=>{})
答案 1 :(得分:0)
这是一种可能的解决方案,但我认为必须有更好的方法。
JS:
axios.post( url,JSON.stringify({'i': '90'}))
.then(function (response) {
console.log(response);
});
PHP(CodeIgniter操作):
$requestData = json_decode(file_get_contents('php://input'), true);
foreach ($requestData as $key => $val){
$val = filter_var($val, FILTER_SANITIZE_STRING); // Remove all HTML tags from string
$requestData[$key] = $val;
}
var_dump($requestData);
响应:
array(1){ [“ i”] => 字符串(2)“ 90” }
答案 2 :(得分:0)
您需要使用json_decode:
$json_data = json_decode($this->input->post());
var_dump($json_data);
echo $json_data->i;
or
foreach($json_data as $data){
echo $data->i;
}