2013-04-04 72 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函數內部它曾經是它開始一個單獨的函數來正確的飛行工作。

相關問題