JS-Json数组创建、ajax提交、php接收

1、json数组的组装

<script>
  var jsonArr = []; //声明数组
  var i,key = 0,value = 10;
  for(i=0;i<5;i++){
     key += 1;
     value -= 1;
     jsonArr.push({"k":key,"v":value});  //组装json数组对象 这里要注意要用双引号,方便php端去接收处理,写成双引号也是json书写的规范。
   }
  var jsonString = Json.stringify(jsonArr); //将json对象装换成字符串
  var param = {"data":jsonString};
</script>

2、ajax提交

<script>
$.ajax({
  url: 'your url',
  type: 'POST',
  data: param,
  success:function (response) {
    console.log(response);
  },
  error:function () {
    alert('与服务器通信失败');
  }
})
</script>

2、php接收

$data= $_POST['data'];
$arr = json_decode($data,true);
//下面使用这种方式来批量更新数据,而不是用循环的方式
$sql = "UPDATE `pic_record` SET `selected_status` = CASE id ";
        $tmp = array();
        foreach ($arr as $id => $ordinal) {
            $tmp[$ordinal['k']] = $ordinal['v'];
            $sql .= sprintf(' WHEN %d THEN %d ',$ordinal['k'],$ordinal['v']);
        }
        $ids = implode(',',array_keys($tmp));
        $sql .= " END WHERE id IN ($ids)"; //这里的id 要和上面的一致
        mysql_query($sql);//伪代码,来执行sql语句

补充:
form表单用POST,GET等方式提交数据到后台,后台用PHP接收提交的数据含有 “"”、“'",“”(双引号,单引号,反斜线),新版PHP(magic_quotes_gpc 在php.ini设置为ON时,自动addslashes()进行转义。5.3废弃,5.4移除,都需要自己用addslashes()进行转义)都需要自己用addslashes()添加转义。
PHP接受的form表单提交过来的数据,需先用stripcslashes()进行转义后在用addslashes()转义,再插入数据库。
用addslashes()转义存入数据库的数据,取出来后,同理:需先用stripcslashes()进行转义,再用json_encode()对需要的数据转换为json格式,再用addslashes()转义后返回给js,让js处理。
所以在组装json数组的时候需要额外的小心,如果写成单引号,后端并没有进行对应的转义处理的话,另外某些框架的request获取参数值得时候,也会做一些前置处理,因此注意这个排查点。

已有 3 条评论
  1. blue blue

    hello

  2. good

添加新评论