prototypeのajaxデバッグの一例


数日前までプログラムがきちんとしていたのに、突然エラーが発生しました.

      var id = 1;
      var URL = '/index/ajaxfetcharea';
      
      new Ajax.Request(URL, {
        method: 'get',
        evalJSON:true,
        evalJS:true,
        parameters:{province: id},
        onSuccess: function(transport, json) {
          var result = transport.responseJSON; 
          var str ='';
          
          //    
          //alert(transport.responseText);

          for(var i=0, j=result.length; i<j; i++) {
            str += ' <a target="_blank" href="http://'+  result[i].a + '.site.com' +'/">'+ result[i].b +'</a>';
          }
          $('id_allarea_li').update(str); 
          
        }
      }


このとき、デバッグ文のコメントをキャンセルし、出力が

<br />
notice:。。。。。
<br />

[{a:1,b:2}, {a:2,b:3}。。。]


もとは、phpは解析エラーに遭遇したが致命的なエラーではなく、phpも閉じなければならない.iniのエラー出力では、phpが出力ストリームの先頭にエラーメッセージのhtmlコードを強引に挿入しますが、サービス側コードに致命的なエラーはありません.先日コードを修正する際にいくつかの機能が追加されました.そもそも、ユニットテストがない理由でもあるでしょう.
phpの一般的な警告でもあります

$a = array();
if ($a['b']) {
  .....
}

これで警告します.正しい書き方は

$a = array();
if (array_key_exists('b', $a)) {
  .....
}

警告はしません.