php开发模式开启notice导致ajax返回error

本文记录了在修改他人编写的PHP项目中遇到的三个常见bug及解决过程:变量未定义使用、notice提示未关闭以及由此引发的AJAX错误。分享了调试经验,并提出了改进措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在做web这块。因为是别人写的,这次是在上面改。所以遇见了许多小问题。不能说人家写的好与不好,其实是每个程序员都有自己的实现方式而已。今天遇到的bug主要是由三个方面引起,而且这个项目没有任何的测试,导致调试起来有些费劲。下面和大家分享一下遇到的问题。

因为这次是三个方面引起的,所以得一个个的排出。

首先是变量未定义使用。这在php里面会导致这个变量为空。看代码

//做php不是很长,命名可能有些不规范
function storeInfo(arrInfo)
{
   if(isset(array["age"])
  {
    $age = array["age"];
  }
  //.... 其他处理
  data = array(); 
  data['age'] = $age;
}

 很明显这里可能会造成$age undefined 。然后返回一个$age undefinded的提示,然后我的ajax就崩溃了,返回error 。

第二个错误跟他类似:

function storeInfo(arrInfo)
{
  $name = arrInfo["name"];
  if(!isset($name))
 {
    $user = find_by_id($id);
    $name=$user["name"]
 }
  // ...其他处理
  data = array();
  data["name"] = $name ;
}

 问题和刚才那个大同小异。

第三个错误是因为开发的时候没有关闭notice的提示。然后在ajax的时候就会出现错误。和上面的两个错误有关。ajax请求返回的结果是这样的:

Notice : $name is undefined at x/y.php in line:123 // 大概是这个意思,记得不是很全
{status:"success",id=123}

 然后就出现了开头的那一幕,因为ajax认为这样的结果是error,然后就悲剧了。

我想说几点:

1.   我写这种代码的时候对后面回用的变量是在开头全部声明,当然像for循环里面的ijk可以直接定义使用;

2.   在项目上,无论大小,有测试才好,像php,js都可以写测试,这样别人在接受的时候能更快的上手;

3.   像这样的错误,涉及前后端了,找bug的位置更大了,需要耐心一点点的调试,查看log。

4.   条错误的同时,我也再像,有没有类似与ajax的测试框架呢。如果有的话,大家帮忙给个连接。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值