PHP 解析 Formdata 的 Ajax,Post 请求异常,多解析出来一个单元

2016-11-15 10:54:14 +08:00
 R18

JS 请求代码

var formElement = document.getElementById("question");
var data = new FormData(formElement);
for(var pair of data.entries()) {
console.log(pair[0]+ ', '+ pair[1]); 
}
$.ajax({
    url:"/home/question",
    type:"post",
    data:data,
    datatype:"json",
    contentType: false,  
    processData: false,
    success:function(data){

打印结果

手机喜好, 安卓
网购频率, 几乎每天一
网购单次时长, 0.5 小时以下
网购费用, 200 元以下
喜欢的音乐, 流行音乐
喜欢的电影, 中国
选择的装饰画种类, 大师名著
旅行频率, 1 个月一次
喜欢的季节, 春天

PHP 部分代码

public function question(){
    var_dump($_POST);
    if(!$this->input->is_ajax_request()){
    echo json_encode(array('success'=>'error','message'=>'The request is not Ajax'));
    return;
    }

PHP 输出结果

array(10) {
  ["手机喜好"]=>
  string(6) "安卓"
  ["网购频率"]=>
  string(15) "几乎每天一"
  ["网购单次时长"]=>
  string(15) "0.5 小时以下"
  ["网购费用"]=>
  string(12) "200 元以下"
  ["喜欢的音乐"]=>
  string(12) "流行音乐"
  ["喜欢的电影"]=>
  string(6) "中国"
  ["选择的装饰画种类"]=>
  string(12) "大师名著"
  ["旅行频率"]=>
  string(13) "1 个月一次"
  ["喜欢的季节"]=>
  string(6) "春天"
  [0]=>
  string(6) "春天"
}

不知道这个[0]是怎么回事,有人遇到过或者这是我哪里出错了么?

1207 次点击
所在节点    问与答
7 条回复
ragnaroks
2016-11-15 11:36:08 +08:00
我是 {param:JSON_String}
后端 $param=json_decode($this->input->post('param'),TRUE);
并不会出现$param->0.
mcfog
2016-11-15 11:50:31 +08:00
查问题要先要分解,或者说控制变量,这里首先应该按照 http 协议划分一下,是 js 发出去的包异常还是 php 收到的包解析异常?如果是 JS 的话,是原生 JS 的问题还是 jQuery 封装的问题? PHP 侧同理

浏览器里面看一下请求包, chrome 的话还有 copy as curl 都是你的伙伴
hanzichi
2016-11-15 11:56:00 +08:00
贴下完整代码?(包括 HTML )
R18
2016-11-15 14:39:38 +08:00
@ragnaroks
@mcfog
@hanzichi
找到问题的原因了,input name 里带中文 就会触发
ragnaroks
2016-11-16 09:23:48 +08:00
@R18 inputname? <input>的 name?
R18
2016-11-16 09:25:55 +08:00
@ragnaroks 是滴……
ragnaroks
2016-11-16 10:29:31 +08:00
@R18 <input name="用户名">这样?
我一般不用 name 属性,都是直接用 id 序列化

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/320597

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX