2009-05-21 92 views
-2

我制作了一个依赖于PHP,AJAX和Javascript的网站。
这里的问题是,网站是不稳定的,这意味着有时验证工作,有时它根本不工作。
验证码是用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

祝你好运得到答案。你最好重新使用一个框架。这段代码对于简单的表单验证来说太复杂了。 – 2009-05-21 19:19:25

回答

0

验证应该在服务器端完成。使用禁用JavaScript时会发生什么?

此外,该JavaScript块只会在页面加载时执行PHP,而不是每次用户验证。

1

很难回答,因为我没有看到问题。 什么不工作?

但我可以想一些问题:

  • 确定,即body.onload运行?有时候不会...
  • 脚本不是交叉浏览器
  • session_start()应该失败,因为之前有一个输出并且不能发送标题。
  • 你说验证失败了,但它在哪里被调用?

请提供更准确的问题和更清晰的代码示例,它不起作用(即我不确定,submitform()的源是如此诡秘)。

相关问题