2012-05-15 72 views
0

我使用的是一個ajax事件,當我點擊提交按鈕添加數據到數據庫時觸發,但自從我創建這個頁面時,他們都在分離文件中進行測試,所以現在當我有把所有的代碼放在一起我已經注意到,4提交按鈕,我用刷新頁面,然後通過過濾更改正在查看的數據正在觸發ajax查詢我已經放置了代碼波紋管..我很難過是什麼只有這樣,才能去這個...問題與ajax事件

<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script> 
<script type="text/javascript"> 
    $(function() 
    { 

$("input[type='checkbox']").on('click', function() { 

    var $this = $(this); 
    var isChecked = $this.prop('checked'); 

    var checkVal = isChecked ? $this.attr('id') : $this.attr("value"); 
    var process= $this.attr("value"); 
    var userid = $this.attr('name'); 

      $.ajax({ 
      type: "GET", 
      url: 'request.php', 
      data: { 
      'uname': checkVal, 
      'id': userid 

       }, 
      success: function(data) { 

     if(data == 1){//Success 
      alert('Sucess'); 
      } 
     if(data == 0){//Failure 
      alert('Data was NOT saved in db!'); 
      } 
      } 
    }); 
    }); 

$('form').bind('submit', function(){ // it is triggering this peice of code when the submit buttons are clicked ??? 
       $.ajax({ 
        type: 'POST', 
        url: "requestadd.php", 
        data: $("form").serialize(), 

        success: function(data) { 

          if(data == 1){//Success 
            alert('Sucess'); 
             } 
          if(data == 0){//Failure 
            alert('Data was NOT saved in db!'); 
             } 
           } 
       }); 
       return false; 
      }); 
         $("#claim").change(function(){  
      $("#area").find(".field").remove(); 
      //or 
       $('#area').remove('.field'); 
      if($(this).val()=="Insurance") 
      { 
     $("#area").append("<input class='field' name='cost' type='text' placeholder='Cost' />"); 

      } 
      }); 
    }); 

</script> 
    </head> 
     <body> 
     <div id="add"> 
     <form name="form1aa" method="post" id="form1a" > 
<div id="area"> 
<input type=text name="cases" placeholder="Cases ID"> 
     <select id="claim" name="claim"> 
      <option value="">Select a Claim</option> 
     <option value="Insurance">Insurance</option> 
     <option value="Warranty">Warranty</option> 
     </select> 
     </div> 
    <select name="type" onChange=" fill_damage (document.form1aa.type.selectedIndex); "> 
    <option value="">Select One</option> 
    <option value="Hardware">Hardware</option> 
    <option value="Software">Software</option> 
    </select> 

    <select name="damage"> 
    </select> 
    <br /> 
    <input type=text name="comment" placeholder="Comments Box"> 
    <input type="submit" value="Submit" name="Submit"> 
    </form> 
    </div> 
    <? 

     $sql="SELECT * FROM $tbl_name ORDER BY cases ASC"; 

    if(isset($_POST['tpc'])){ 
     $sql="select * from $tbl_name WHERE class LIKE '1%' ORDER BY cases ASC"; 
    } 
    if(isset($_POST['drc'])){ 
     $sql="select * from $tbl_name WHERE class LIKE 'D%' ORDER BY cases ASC"; 
    } 
    if(isset($_POST['bsc'])){ 
     $sql="select * from $tbl_name WHERE class LIKE 'B%' ORDER BY cases ASC"; 
    } 
    $result=mysql_query($sql); 

    ?> 

<!-- Filter p1 (Start of) !--> 
<form action="ajax-with-php.php" target="_self"> 
<input type="submit" name="all" value="All" /> // the issue is mainly occuring here when i click any of thesse meant to refesh the page and change the query with the if statements but is trigger the other code i commented 
<input type="submit" name="tpc" value="TPC" /> 
<input type="submit" name="drc" value="DRC" /> 
<input type="submit" name="bsc" value="BSC" /> 
</form> 
+0

笏你編輯?? – Matthew

+0

馬修,如果你點擊「編輯」旁邊的超鏈接(截至此刻 - 說13分鐘前),你可以看到約翰改變了什麼。 – nnnnnn

回答

1
$('form').bind('submit', function(){ ... 

將綁定到所有窗體。將其更改爲

$('form#form1a').bind('submit', function(){ ... 

它只會綁定到第一個表單,而不是第二個表單。

+0

如果您按ID選擇標籤名稱是多餘的:'$('#form1a')'將更有效地完成這項工作。 – nnnnnn

+0

同意了,在這種情況下是合理的。我傾向於使用標籤名稱,因爲它可以幫助我理解請求的上下文 - 就像在$('form#numberOne')中那樣' –

1
$('form').bind('submit', function(event){ 
    event.preventDefault(); 
    $.ajax({... 

嘗試使上述1的變化)將event參數回調2 )執行.preventDefault()方法。在提交事件中使用AJAX時,需要停止重新加載頁面並中斷異步請求。

可能還有更多的問題,但希望這會讓你走上正軌。

+0

你是什麼意思不會阻止它甚至將數據添加到數據庫? – Matthew

+0

不,由於您正在執行AJAX請求,它將與服務器進行通信而無需重新加載頁面。如果你想重新加載頁面擺脫ajax請求,並直接發佈到requestadd.php。你也應該遵循其他答案的建議。您需要綁定到正確的表單。 – marteljn