2016-07-22 36 views
0

我無法訪問我在php標籤內創建的文本框值到ajax調用。當我在ajax中打印文本框的值時,會調用它的'undefined',那麼是否有任何方式來訪問文本框的值。看到在代碼中的註釋在管路39如何訪問php標籤內創建的文本框值到ajax調用

<html> 
 
<?php 
 
include 'config.php'; 
 
include 'dbconnect.php'; 
 
?> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 
    <table border="1"> 
 
     <tr> 
 
      <th>categoryId</th> 
 
      <th>category</th> 
 
      <th>Operations</th> 
 
     </tr> 
 
     <?php 
 
     $sql_query = "select category_id,category from cart_category_descriptions limit 10;"; 
 
     $result = $conn->query($sql_query); 
 
     if ($result->num_rows > 0) { 
 
      while($row = $result->fetch_assoc()) { 
 
       echo '<tr id='.$row["category_id"].'><td>'.$row["category_id"].'</td><td><input type=text name="cat" value='.$row["category"].'></td><td><button class="deletedata">Delete</button><button class="updatedata">Update</button></td></tr>'; 
 
      } 
 
     } 
 
     else { 
 
      echo "0 results"; 
 
     } 
 
     ?> 
 
     <script> 
 
     $(document).on('click','.deletedata',function(){ 
 
      id = $(this).closest('tr').attr('id'); // Get the clicked id for deletion 
 
      alert(id); 
 
      $.ajax({ 
 
       type:'POST', 
 
       url:'delete.php', 
 
       data:{delete_id:id}, 
 
       success:function(data){ 
 
         window.location.reload(); 
 
       } 
 
      })}); 
 
     $(document).on('click','.updatedata',function(){ 
 
      id = $(this).closest('tr').attr('id');// Get the clicked id for deletion 
 
      alert($("#cat").val());// cannot access, undefined 
 
      $.ajax({ 
 
       type:'POST', 
 
       url:'update.php', 
 
       data:{update_id:id, 
 
         cat: $("#cat").val()}, 
 
       success:function(data){ 
 
        alert("updated"); 
 
       } 
 
      })}); 
 
     </script> 
 
    </table> 
 
</html>

回答

1

您正試圖通過ID訪問輸入銀價值,這是問題,因爲ID不是輸入屬性提及。

$(document).on('click','.updatedata',function(){ 
      id = $(this).closest('tr').attr('id');// Get the clicked id for deletion 
      cat_val=$(this).closest('tr').find('input[name="cat"]').val(); 
      $.ajax({ 
       type:'POST', 
       url:'update.php', 
       data:{update_id:id, 
         cat: cat_val}, 
       success:function(data){ 
        alert("updated"); 
       } 
      })}); 
0

你的代碼是一團糟,你的<head>在哪裏?把你的jQuery放在那裏。如果您使用的是id,也需要將其他答案添加到輸入框id="cat"。從你的代碼看起來你正在重複這個輸入框,這使得使用id不是你想要做的事情,因爲id值只能使用一次。你應該讓它成爲一個班級,並將class="cat"添加到您的輸入框中,並獲得值爲$('.cat').val();由於您正在使用$(document).on('click','.updatedata',function(){,因此使用此類作爲班級更有意義。

+0

根據記錄,在大多數情況下,JavaScript是最好位於標籤之前,而不是在頭部。 – entiendoNull

+0

@Cesar你可以寫代碼來使用class =「cat」來訪問最近的「tr」標籤的id –

2

警報($( 「#貓」)VAL()); //不能訪問,未定義

在上面的第39行,你已經嘗試使用 「貓」 的ID,但 '貓' 是提醒值沒有定義的 - <input type=text name="cat" value='.$row["category"].'>

解決方案:

變更線 - <input type=text name="cat" value='.$row["category"].'> 用 - <input type=text id="cat" name="cat" value='.$row["category"].'>

注:通過把靜態值輸入字段,如與嘗試 - <input type=text id="cat" name="cat" value='test'>

全部代碼解決方案:

<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
 
    <table border="1"> 
 
     <tr> 
 
      <th>categoryId</th> 
 
      <th>category</th> 
 
      <th>Operations</th> 
 
     </tr> 
 
     <?php 
 
       
 
       echo '<tr id="test cat id"><td>Test Cat Id </td><td><input type="text" name="cat" id="cat" value="test"></td><td><button class="updatedata">Update</button></td></tr>'; 
 
     
 
     ?> 
 
     <script> 
 
     $(document).on('click','.deletedata',function(){ 
 
      id = $(this).closest('tr').attr('id'); // Get the clicked id for deletion 
 
      alert(id); 
 
      $.ajax({ 
 
       type:'POST', 
 
       url:'delete.php', 
 
       data:{delete_id:id}, 
 
       success:function(data){ 
 
         window.location.reload(); 
 
       } 
 
      })}); 
 
     $(document).on('click','.updatedata',function(){ 
 
      id = $(this).closest('tr').attr('id');// Get the clicked id for deletion 
 
      alert($("#cat").val());// cannot access, undefined 
 
      $.ajax({ 
 
       type:'POST', 
 
       url:'update.php', 
 
       data:{update_id:id, 
 
         cat: $("#cat").val()}, 
 
       success:function(data){ 
 
        alert("updated"); 
 
       } 
 
      })}); 
 
     </script> 
 
    </table> 
 
</html>