2012-05-09 46 views
0

我是Jquery的新手,只是遇到了一個我無法克服的問題。無法使用jQuery建立ajax連接,表單自動提交?

我簡單地說,有一個頁面上有幾個元素的HTML表單。我想單擊提交按鈕來驗證表單值,然後使用JQuery將一些表單值插入到數據庫中。在插入過程成功完成後,我希望表單能夠自然提交。

我做了驗證工作,並從表單中成功獲取所有值,但我無法連接到PHP頁面。我有兩頁。

這裏是jQuery代碼:

 <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#odeme").submit(function() { 


       $('#ok').attr('disabled', 'disabled'); 
       $("#ok").after('<span id="info" style="font-size:8pt;color:green;padding-left:5px;"><img align="absmiddle" src="loading.gif" border="0" /> &nbsp; Ödemeniz Yapılıyor</span>'); 

       //değişkenler 

       var jad = $("#ad").val().length; 
       var jsoyad = $("#soyad").val().length; 
       var jadres = $("#adres").val().length; 
       var jeposta = $("#eposta").val().length; 
       var isEposta = $("#eposta").val(); 
       var epostaReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
       var jsehir = $("#sehir").val(); 
       var jtaksit = $("#taksit").val(); 
       var jkartisim = $("#kartisim").val().length; 
       var jkartno = $("#kartno").val().length; 
       var jkartay = $("#kartay").val(); 
       var jkartyil = $("#kartyil").val(); 
       var jkartcvv = $("#kartcvv").val().length; 
       var hasError = false; 

       // kontrollere başla 

       if (jad < 6) { 
        $('#ad').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jsoyad < 2) { 
        $('#soyad').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jadres < 10) { 
        $('#adres').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jeposta < 6) { 
        $('#eposta').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jsehir == 0) { 
        $('#sehir').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jtaksit == 20) { 
        $('#taksit').css('background', '#FF9494'); 
        hasError = true; 
        } 

       if (jkartisim < 6) { 
        $('#kartisim').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jkartno < 15) { 
        $('#kartno').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jkartay == 0) { 
        $('#kartay').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jkartyil == 0) { 
        $('#kartyil').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (jkartcvv != 3) { 
        $('#kartcvv').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if ($('#sozlesme').is(':checked')) { 
        hasError = false; 

       } else { 
        $('#sozlesme').css('outline-color', 'red'); 
        $('#sozlesme').css('outline-style', 'solid'); 
        $('#sozlesme').css('outline-width', 'thin'); 
        hasError = true; 
        } 

       if (!epostaReg.test(isEposta)) { 
        $('#eposta').css('border', 'solid 1px red'); 
        hasError = true; 
        } 

       if (hasError == true) { 
        $("#info").remove(); 
        $("#ok").after('<span id="errorSpan" style="color:red;padding-left:5px;">Lütfen formu eksiksiz doldurunuz.</span>'); 
        $("#errorSpan").delay(3000).fadeOut(2000); 
        $('#ok').removeAttr("disabled"); 
        return false; 


        } else { 


       // form verilerini db ye at 

       var form_ad = $("#ad").val(); 
       var form_soyad = $("#soyad").val(); 
       var form_adres = $("#adres").val(); 
       var form_eposta = $("#eposta").val(); 
       var form_sehir = $("#sehir").val(); 
       var form_taksit = $("#taksit").val(); 
       var form_telno = $("#telno").val(); 
       var form_cinsiyet = $("#cinsiyet").val(); 

       var dataString = 'ad='+ form_ad + 
           '&soyad=' + form_soyad + 
           '&adres=' + form_adres + 
           '&eposta=' + form_eposta + 
           '&sehir=' + form_sehir + 
           '&taksit=' + form_taksit + 
           '&telno=' + form_telno + 
           '&cinsiyet=' + form_cinsiyet; 

       alert(dataString); 

       JQuery.ajax({ 
        type: "POST", 
        url: "form.php", 
        data: dataString, 
        cache: false, 
        success: function(result){ 


          if(result == 1) { 
          alert(result); 

          return false; } 

          else { 

          $("#ok").after('<span id="errorSpan" style="color:red;padding-left:5px;">Lütfen formu eksiksiz doldurunuz.</span>'); 


          } 
         } 
        }); 

       } 
      }); 
     }); 

    </script> 

這裏是form.php的的代碼

<?php 

If (!isset($_POST['ad'])) { 
    echo 0; 
    } 
    else { 

$ad = $_POST['ad']; 

If ($ad == "asdasd") { 
    echo 1; 
} else { 

echo 0; 
} 

} 
?> 

我已閱讀問起這個問題的所有問題,並嘗試應用所有解決方案,但我stucked:/

+0

您需要防止默認操作阻止提交發生。 http://api.jquery.com/event.preventDefault/ –

+0

要添加到我以前的評論,ajax是異步的,這意味着它可能不會在您的提交函數返回之前完成,因此可能會中止ajax請求。您在ajax成功處理程序中的返回false將不會執行任何操作。 –

+0

感謝凱文B,我試圖使用preventDefault,但無法成功。你有什麼想法,我應該把這個代碼放在哪裏? – Sercan

回答

0

試試這個:

$(document).ready(function() { 
    $("#odeme").submit(function() { 

     //validation 
     //and 
     //ajax 

     return false; //this suppresses default form submission behaviour 

    }); 
}); 
+0

*「在插入過程成功完成後,我希望表單自然提交。」* –

+0

如果你這樣做了,那麼與快速連接的人會看到「>Lütfenformu ...」表單提交併且頁面開始刷新之前最長爲毫秒。 (a)根據驗證的結果允許/抑制ajax動作,並無條件地從外部函數返回false來抑制表單提交,或者(b)不執行任何ajax並允許/禁止表格提交取決於驗證的結果。 –