需求:使用ajax来添加表单数据,例如输入一个商品的货号,需要将商品的详情添加到表单中,但是不允许重复添加:
第一种解决思路:在ajax请求后,在PHP文件中定义一个全局变量
global $arr;
<?php if ($_REQUEST['act'] == 'add') { $goods_sn = $_REQUEST['goods_sn']; global $arr; $arr = array(); if (in_array($goods_sn,$arr)) { $msg = '请不要添加重复商品!'; make_json_error($msg);l } } ?>
这样处理之后,有个问题,就是每次请求都清空了,导致没有效验,如果将全局变量定义到php文件开始的地方,第一次请求php的时候,会出现$arr不是数组的警告,而且是动态表单删除的时候,没法去掉数组里面的商品。
二、方法一行不通后,我仔细分析了需求,既然是js发起的请求,为什么不在发起之前做出判断呢,于是我想到了使用Js的全局变量.
1 var arr = new Array(); 2 $goods_sn = document.getElementById('goods_sn').value; 3 4 for (var i=0;i<arr.length;i++) 5 { 6 if(arr[i] == $goods_sn) 7 { 8 alert('请不要重复添加商品!'); 9 return false; 10 } 11 } 12 13 arr.push($goods_sn); 14 15 //如果要删除数组的最后一位 16 arr.pop();