2015-10-27 51 views
0

我想創建一個朋友按鈕像fb.I有一個while循環回聲的名稱和一些其他數據我需要保存到我的數據庫中的每個用戶的表請求seperatly.My的問題是,我不知道如何傳遞他們的Ajax,因爲我有相同的文本框buttons.I我試圖通過他們與相同的ID,但這傳遞了3次相同的數據或只有他們之一。我試圖使用id =「something $ row [id]」來定義每個文本框和按鈕,但我不知道如何觸發jquery函數並將它們與ajax一起發佈。 a picture of what i am trying如何從php發佈數據while循環與ajax

我的PHP文件

echo "<div class='col-xs-12'> 
         <div class='row fixed-table'> 
          <div class='table-content'> 
           <table class='table table-striped text-muted' id='mytable'> 
            <tbody>"; 
             while($row = mysqli_fetch_array($requests)){ 
              $username=("SELECT * FROM users WHERE user_id=".$row['patient']); 
              $found=mysqli_fetch_array(mysqli_query($sql_link,$username)); 
              echo "<tr> 
               <td class='text-center'> 
                <p> 
                 $found[username] 
                <p>                
               </td> 
               <td class='text-center'>"; 
                $patient_username=$found['username']; 
                $patient_id=$found['user_id']; 
               echo"<input type='text' id='patient_id$row[id]' class='hidden' value='$patient_id'> 
                <input type='text' id='patient_username$row[id]' class='hidden' value='$patient_username'> 
                <input type='text' id='doctor_id$row[id]' class='hidden' value='$doctor_id'> 
                <input type='text' id='doctor_fname$row[id]' class='hidden' value='$doctor_fname'> 
                <input type='button' id='accept_btn$row[id]' class='btn btn-primary' value='Accept'>                                        
               </td> 
              </tr>"; 
             } 
            echo "</tbody> 
           </table> 
          </div> 
         </div> 
        </div>"; 

我的JS文件

function decision(){ 
     var patient_id = $('#patient_id').val(); 
     var patient_username = $('#patient_username').val(); 
     var doctor_id = $('#doctor_id').val(); 
     var doctor_fname = $('#doctor_fname').val(); 

      $.ajax({ 
       type:"post", 
       url:"php/add.php", 
       data: {"patient_id": patient_id,"patient_username": patient_username,"doctor_id": doctor_id,"doctor_fname": doctor_fname}, 
       success:function(data){ 
        $("#decision").html(data); 
       } 
      }); 

$('#accept_btn').click(function(){ 
     decision(); 
    }); 
+0

你在正確的軌道上。利用jQuery使用部分屬性值選擇元素的能力:'$('[id^= accept_btn]')。click(descision)'當然,您必須更改'descision()'來找到合適的輸入基於'this'按鈕的ID。 – Terminus

回答

0

我終於做到了。它花了我幾小時,但它的工作原理,我wanto謝謝大家的幫助,特別是伊戈爾伊利奇。 該解決方案

PHP

<tbody>"; 
             while($row = mysqli_fetch_array($requests)){ 
              $username=("SELECT * FROM users WHERE user_id=".$row['patient']); 
              $found=mysqli_fetch_array(mysqli_query($sql_link,$username)); 
              echo "<tr> 
               <td class='text-center'> 
                <p> 
                 $found[username] 
                <p>                
               </td> 
               <td class='text-center'>"; 
                $patient_username=$found['username']; 
                $patient_id=$found['user_id']; 
               echo"<buuton id='accept_btn$row[id]' class='btn btn-primary' data-patient_id='$patient_id' data-patient_username='$patient_username' data-doctor_id='$doctor_id' data-doctor_fname='$doctor_fname' 
               href='#' onclick='decision(this);'> 
               Accept</button> 
               </td> 
              </tr>"; 
             } 
            echo "</tbody> 

和js

function decision(p){ 

    var patient_id = $(p).data('patient_id'); 
    var patient_username = $(p).data('patient_username'); 
    var doctor_id = $(p).data('doctor_id') 
    var doctor_fname = $(p).data('doctor_fname'); 

     $.ajax({ 
      type:"post", 
      url:"php/add.php", 
      data: {"patient_id": patient_id,"patient_username": patient_username,"doctor_id": doctor_id,"doctor_fname": doctor_fname}, 
      success:function(data){ 
       $("#decision").html(data); 
      } 
     }); 

} 
1

這很容易與jQuery爲你甚至需要知道表單中的ID 。但是,首先您需要將所有輸入包裝到表單中,併爲表單分配一個ID併爲每個輸入分配一個名稱。

 var data = $("#myForm").serialize(); 
 
     $.post('myPHPFILEURL.php', data,function(retData){ 
 
      //CODE THAT HANDLES SERVER RESPONSE 
 
      
 
      
 
      });
  echo "<div class='col-xs-12'> 
 
           <div class='row fixed-table'> 
 
            <div class='table-content'> 
 
             <form id='myForm'> 
 
             <table class='table table-striped text-muted' id='mytable'> 
 
              <tbody>"; 
 
               while($row = mysqli_fetch_array($requests)){ 
 
                $username=("SELECT * FROM users WHERE user_id=".$row['patient']); 
 
                $found=mysqli_fetch_array(mysqli_query($sql_link,$username)); 
 
                echo "<tr> 
 
                 <td class='text-center'> 
 
                  <p> 
 
                   $found[username] 
 
                  <p>                
 
                 </td> 
 
                 <td class='text-center'>"; 
 
                  $patient_username=$found['username']; 
 
                  $patient_id=$found['user_id']; 
 
                 echo"<input type='text' name='patient_id$row[id]' id='patient_id$row[id]' class='hidden' value='$patient_id'> 
 
                  <input type='text' id='patient_username$row[id]' name='patient_username$row[id]' class='hidden' value='$patient_username'> 
 
                  <input type='text' id='doctor_id$row[id]' name='doctor_id$row[id]' class='hidden' value='$doctor_id'> 
 
                  <input type='text' id='doctor_fname$row[id]' name='doctor_fname$row[id]' class='hidden' value='$doctor_fname'> 
 
                  <input type='button' id='accept_btn$row[id]' name='accept_btn$row[id]' class='btn btn-primary' value='Accept'>                                        
 
                 </td> 
 
                </tr>"; 
 
               } 
 
              echo "</tbody> 
 
             </table> 
 
             </form> 
 
            </div> 
 
           </div> 
 
          </div>";

只需選擇您的形式和序列化()的數據,然後通過新的序列化的字符串到您的AJAX功能的數據參數。

+0

他的輸入中沒有名稱屬性。如果你打算建議他使用表格 – Terminus

+0

謝謝,你應該在你的回答中解決。 – PC3TJ

+0

沒關係。修改回答輸入地址名稱屬性 – PC3TJ

1

您可以添加data-id="userID" 屬性的輸入,而不是在ID有它的

<input type='button' id='accept_btn$row[id]' class='btn btn-primary' value='Accept'>

所以,你的投入會是這個樣子:

<input type='button' id='accept_btn' data-id='$row[id]' class='btn btn-primary' value='Accept'> 

然後在你的jQuery/javascript代碼使用像這樣:

$("#accept_btn").on("click", function(){ 
    var userID = $(this).data("id"); //this will get the value from data-id from the clicked button 
    //rest of your code here... 
}); 

您也可以爲所有輸入字段添加此項,並從中檢索數據。

$("#patient_username").data("id") 

希望這會有所幫助。你可以檢查這個樣本jsfiddle https://jsfiddle.net/Lz3k1he1/

+0

我發佈的教科書values.My問題是這裏的一切都有相同的ID,所以當我發佈第一個回聲它運行兩次函數併發布值。當我再次點擊運行4倍的功能,併發布前4個texboxes然後16的值,然後繼續。我想接受朋友,只從我需要的文本框中獲取價值只在時間 –

+0

這是一個好開始 – Terminus

+0

@VaggelisKsps是的,對於遲到的迴應抱歉。我只查了一些文檔,並說它不能有多個具有相同ID的元素。你可以看看這個問題的答案:http://stackoverflow.com/a/8498617/2911633但基本上你應該使用come class但不同的ID啊,我沒有看到你在下面發佈解決方案。很高興我能夠幫助:) –