2017-06-29 27 views
0

AJAXを使用している患者の状態を変更するときは、<td>で表示される値をドロップリストから選択した同じ値に直接変更する必要があります。ページをリロードせずにtdの値を更新する

$(document).on('change', '#patient_status ', function() 
{ 
    if(confirm("Are you sure you want to change the status of a patient ?")) 
    { 
     var pid = $(this).closest('tr').attr('id'); 
     var new_status = $("#patient_status").val(); 
     $(this).closest('tr').find('#change_status').val(new_status); 
     //console.log(pid + " " + new_status); 
     $.ajax({ 
      url: '../php/changeStatus.php', 
      type: 'POST', 
      dataType: 'TEXT', 
      data: {pid: pid, new_status: new_status}, 
      beforeSend:function(){ 
       $('#wait').show(); 
      }, 
      success:function(resp){ 

      }, 
      error:function(resp){ 

      }, 
      complete:function() 
      { 
       $('#wait').hide(); 
      } 
     }) 
    } 
}); 

例は、患者のステータスをアクティブからデフオルトに変更した場合の画像です。値はデータベースで変更されますが、画面上ではページをリロードする必要があります。

$(this).closest('tr').find('#change_status').val(new_status); 

HTMLフォームはここにある:

<tr id="<?php echo $patient['patient_id']; ?>"> 
<td id="change_status"><?php echo $patient['patient_status']; ?></td> 
<tr> 
+0


のでしょうか?あなたがDOMのトラバーサルを行っているという事実は、あなたがそうしていることを示しています。その場合、それが問題です。それらをクラスに変更します。 –

+0

いいえ私は似たようなIDがありません。もっと説明できますか? – droidnation

+0

私はそれらをに変更しました。 #の代わりにid =をclass =に変更しても同じように – droidnation

答えて

1

アヤックス成功の後、あなたはこのように行うことができます:まず

success:function(resp){ 
$('#td _id').html(change_status_value);// just a demo 
      }, 
+0

問題が修正されました。テーブルと他の行を変更することはできません – droidnation

+0

あなたの#td_idを確認....それはすべての行に対して一意でなければなりません。 –

+0

が予想されます。しかし、すべての行を同時に変更したい場合は、#td_idをすべての行で同じにする必要があります –

1

私はエラーがこの行であると思います複数の要素に対してidの代わりにclassを使用する
例:<td class="change_status">

第二に、あなたが同じ `id`を持つ複数の要素を持っていますか
$(this).html(new_status);
代わり $(this).closest('tr').find('#change_status').val(new_status);

関連する問題