为什么我的AJAX验证代码无法正常工作?

时间:2009-05-21 15:34:41

标签: php javascript ajax

我建立了一个依赖PHP,AJAX和Javascript的网站 这里的问题是网站不稳定,这意味着有时验证工作正常,有时候根本不工作 验证代码是用JavaScript编写的。这是否意味着我们需要更多特殊条件?

验证代码:

<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>

2 个答案:

答案 0 :(得分:1)

很难回答因为我没有看到问题。 究竟什么不起作用?

但我可以假设一些问题:

  • 你确定,body.onload会运行吗?有时不...
  • 脚本不是crossbrowser
  • session_start()应该失败,因为之前有输出并且无法发送标题。
  • 你说验证失败了,但它在哪里被调用?

请提供更准确的问题和更明确的代码示例,这些代码不起作用(即我不确定,submitform()的来源是如此nessecary)。

答案 1 :(得分:0)

验证应该在服务器端完成。当用户禁用他们的JavaScript时会发生什么?

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