2009-05-21 17 views
-2

私はPHP、AJAX、Javascriptに依存するウェブサイトを作った。
ここで問題となるのは、Webサイトが不安定であることがあります。これは、検証が正常に機能していないことがあり、まったく動作しないことがあることを意味します。
検証コードはJavaScriptで書かれています。これはもっと特殊な条件が必要なことを意味しますか?AJAX検証コードが正しく機能しないのはなぜですか?

検証のためのコード:

<script language=Javascript> 
function Inint_AJAX() { 
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {} //IE 
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE 
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript 
alert("XMLHttpRequest not supported"); 
return null; 
}; 

function dochange(src, val) 
{ 
var req = Inint_AJAX(); 
req.onreadystatechange = function() 
{ 
     if (req.readyState==4) 
     { 
      if (req.status==200) 
      {  
       document.getElementById(src).innerHTML=req.responseText; 
      } 
     } 
}; 
req.open("GET", "traditional_locate.php?data="+src+"&val="+val); 
    req.send(null); 
} 

window.onLoad=dochange('cities', -1); 


function submitform() 
{ 
if(document.form1.onsubmit()) 
{ 
    document.form1.submit(); 
} 
} 

function validate() 
{ 
    var p_o_box=(document.form1.p_o_box.value); 
    var owner_name=(document.form1.owner_name.value); 
    var cities=(document.form1.cities.value); 
    var post_office=(document.form1.post_office.value); 


     if(cities == 0) 
     { 
      alert("Please Choose city"); 
      document.form1.cities.focus(); 
      return false; 
     } 

     else if(post_office == 0) 
      { 
      alert("Please Choose post office"); 
      document.form1.post_office.focus(); 

      return false; 
      } 

      else if (p_o_box=="") 
       { 
        alert ("Please Write P.O.Box"); 
        document.form1.p_o_box.focus(); 
         return false;      
       } 

       else if(owner_name=="") 
         { 
         alert("Please Write Owner Name"); 
         return false; 
         } 

        else if(p_o_box!="") 
         { 
           var a=new Array; 

          <?php 
           session_start();          
           $zipinfo=$_SESSION[zip_code];         
           $conn=mysql_connect('localhost','root',''); 
           mysql_select_db('post_db',$conn); 
           $query="select p_o_box from p_o_box where zip_code='$zipinfo' "; 
           $result = mysql_query ($query , $conn) or die (mysql_error()); 
           $rows=mysql_num_rows($result); 
           $n = array(); 
           for($i=0;$i<$rows;$i++) 
           { 
            $data=mysql_fetch_row($result); 
            $n[] = $data[0]; 
           } 

           for($i=0;$i<count($n); $i++) 
           { 
            echo "a[$i]='".$n[$i]."';\n"; 
           }   
           ?> 

           var ss=0; 
           for(i=0;i<a.length;i++) 

           if(a[i]==p_o_box) 
            { 
             var ss=1; 
            } 

           if (ss==0) 
            { 
             alert('not correct p.o. box'); 
             document.form1.p_o_box.focus(); 
              return false; 
            } 
           else 
            { return true;} 

         }      


    return true;   
} 

</script> 
+0

幸運が答えを得ています。あなたはフレームワークを再利用する方が良いでしょう。このコードは単純なフォームの検証には複雑すぎます。 –

答えて

0

検証は、サーバー側で実行する必要があります。使用がJavaScriptを無効にするとどうなりますか?

また、JavaScriptのブロックは、ページの読み込み時にのみPHPを実行し、ユーザーが検証するたびに実行するのではありません。

1

私は質問が表示されないので、非常に答えにくいです。 正確には機能しません。

しかし、私はいくつかの問題を考えることができます。

  • はよろしいです、そのbody.onloadが実行されますか?ときどき...
  • スクリプトはクロスブラウザーではありません
  • 前に出力があり、ヘッダーを送信できないため、session_start()が失敗するはずです。
  • あなたは検証に失敗したと言っていますが、どこに呼び出されていますか?

具体的な質問やより明確なコード例を提供してください(具体的には、submitform()のソースがそうでないとわかりません)。

関連する問題