2013-04-04 42 views
0

我正在使用JavaScript来验证我的表单。这是基本的验证。我有问题,它发送synum变量通过张贴从Java脚本到我的PHP页面valid_synum.php在那里我做一个pdo查找检查如果该synum存在或不,然后我回声一个1或0基于结果。我希望Java脚本能够获得该结果并发送警报错误,或者如果确定允许表单提交。这里是我有的JavaScript。至于我可以告诉POST调用发送一个变量从JavaScript到PHP被检查并返回到javascript

$。员额( “valid_synum.php”。{synum:synum},

永远不会叫了起来,我把一个测试的PHP页面并且测试永远不会从脚本启动,如果我直接在浏览器加载PHP它工作正常

任何帮助,将不胜感激

<script> 
function isNumber(input) 
{ 

return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0; 
} 

function checkForm(f) 
{ 
    if (f.elements['worknum'].value != "") 
    { 
    if ((isNumber(f.elements['worknum'].value)) == false) 
     { 
     alert("The Work Order Number is not valid") 
     return false; 
     } 
     var chars = 6; 
    if((f.elements['worknum'].value).length != 6) 
     { 
     alert("The Work Order Number is not 6 digits") 
     return false; 
     } 
    } 

    if (f.elements['synum'].value == "") 
    { 
     alert("Please Enter the Store Number"); 
     return false; 
    } 
    if (f.elements['worknum'].value == "") 
    { 
     alert("Please Enter the Work Order Number"); 
     return false; 
    } 

    if (f.elements['synum'].value != "") 
     { 
     //get the username 
     var synum = (f.elements['synum'].value); 


     $.post("valid_synum.php", { synum: synum }, 
      function(result){ 

        //if the result is 1 
       if(result == 1){ 
        //do nothing valid synum 
        alert("Good") 
        return false; 
       }else{ 
        //show that the username is NOT available 
        alert("The store number is NOT valid. Please Enter full store number") 
        return false; 
       } 
     }); 

    } 

    else 
    { 
     f.submit(); 
     return false; 
    } 

} 


</script> 

这里是我的PHP页面代码:。。。

$id=$_POST['synum']; 

try{ 
$conn = new PDO("sqlsrv:Server= $eautoserver ; Database = $eautodb ", $eautouser, $eautopwd); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$stmt = $conn->prepare('SELECT * FROM vw_DCR_Web_Customer_Query WHERE CustomerNumber= :id'); 
$stmt->execute(array('id' => $id)); 
$row = $stmt->fetch(); 

} catch(PDOException $e) { 
echo 'ERROR: ' . $e->getMessage(); 
} 

if ($row){ 
echo 1; 
$email_body="1"; 
}else{ 
echo 0; 
$email_body="0"; 
} 
+0

如果您在.post之前放置了警报,它是否显示警报?意思是,它甚至可以获得邮政编码吗? – user1048676 2013-04-04 18:39:18

+0

是的,如果我确实警觉(synum);就在$ .post之前,它会显示我输入的内容。所有其他错误检查,Java脚本工作正常。只是这一块似乎并没有激活。我在php上放置了代码来发送电子邮件,只是为了测试页面是否被访问,而不是。 – 2013-04-04 18:53:22

+0

控制台中有任何错误吗? – user1048676 2013-04-04 18:58:11

回答

1

我应该检查是否打开/关闭方括号OK知道为什么你的代码是不是在期望的条件进入。

顺便说一下,你可以测试一个字符串是否是一个数字,并验证它是否是一个更清洁的方式是空的。

function isNumber(number){ 
    return !isNaN(+number) && number !== "" 
} 
+0

这样你不需要在每次调用函数时创建一个Regex对象... – fernandosavio 2013-04-04 19:01:52

+0

谢谢我会调整它。 – 2013-04-04 19:08:12

+0

与你的声明“打开/关闭方括号”你的意思是确保我的var synum =(f.elements ['synum'] .value);实际上有我期待的数据?我已经在帖子前发布了一个提醒,以测试数据以确认它是输入的内容。 – 2013-04-04 19:17:29

0

我改变了我如何设置代码,并删除

$(document).ready(function(){ 
$("#synum").change(function() {  
$.post("valid_synum.php", { synum: synum }, 
     function(result){ 

       //if the result is 1 
      if(result == 1){ 
       //do nothing valid synum 
       alert("Good") 
       return false; 
      }else{ 
       //show that the username is NOT available 
       alert("The store number is NOT valid. Please Enter full store number") 
       return false; 
      } 
    }); 

从我checkform函数内部它曾经是它开始一个单独的函数来正确的飞行工作。

相关问题