Ajax与PHP实现商品名称重复检查

需积分: 12 3 下载量 199 浏览量 更新于2024-09-11 收藏 805B TXT 举报
该资源是关于使用Ajax技术与PHP后台交互,实现商品名称的重复性检查功能。 在电商网站中,商品的唯一性是非常重要的,避免用户添加已存在的商品是必要的。这个示例展示了如何利用Ajax实时检测用户输入的商品名称是否已经在数据库中存在。Ajax是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术,这可以提供更好的用户体验,因为用户无需等待页面重新加载。 首先,我们来看前端部分。在JavaScript中,我们监听`input`元素(商品名称输入框)的`blur`事件,即当用户失去焦点时触发的事件。当用户离开输入框时,代码会执行以下操作: ```javascript $("input[name=g_name]").blur(function(){ $.getJSON('http://www.ijyong.com/shop/index.php?act=store_goods_add&op=check_name&goods_name=' + $("input[name=g_name]").val(), function(result){ if(result.state){ alert('aa'); // 商品名称未重复,提示用户 }else{ alert('bb'); // 商品名称已存在,提示用户 } }); }); ``` 这段代码使用jQuery库中的`$.getJSON`函数发起一个异步的GET请求,向服务器发送商品名称。URL中包含了操作(`act`)和方法(`op`)参数,以及商品名称(`goods_name`)。当服务器返回结果后,`result.state`将决定显示哪个警告消息:如果`state`为`true`,则商品名称未被占用;反之,如果`state`为`false`,则表示商品名称已存在于系统中。 接下来,我们看PHP后台的部分,具体是在`store_goods_add.php`文件中定义的`check_name`操作: ```php public function check_nameOp() { $goods_name = trim($_GET['goods_name']); // 获取商品名称 $m_model = Model('goods'); // 实例化商品模型 $goods_info = $m_model->getGoodsCommonInfo(array('goods_name' => $goods_name)); // 查询商品信息 if ($goods_info) { echo json_encode(array('state' => true)); // 如果查询结果存在,返回true } else { echo json_encode(array('state' => false)); // 否则,返回false } } ``` 在PHP中,`check_nameOp`方法接收商品名称,然后通过商品模型查询是否存在相同名称的商品。如果有记录返回,则将`state`设置为`true`并通过`json_encode`函数发送回前端;若没有记录,`state`设为`false`并同样以JSON格式返回。这样,前端就能根据返回的`state`值,给出相应的用户反馈。 总结来说,这个功能的核心是通过Ajax实时验证商品名称的唯一性,提供了一个简洁有效的用户体验,同时减轻了服务器的负担,避免了不必要的页面刷新。