2016-07-22 7 views
0

phpタグ内で作成したテキストボックス値にajax呼び出しでアクセスできません。私はajaxでテキストボックスの値を印刷しているときに 'undefined'を呼び出すので、テキストボックスの値にアクセスする方法はあります。あなたはIDが入力属性に記載されていないので、これは問題であるidで入力BOC値にアクセスしようとしているphpタグ内で作成されたtextbox値に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

ライン39でコード内のコメントを参照してください。

$(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>

関連する問題