1

これは私のコードのどこかで問題になるかもしれませんが、ここに手がかりがあることを願っています。

jQuery AJAX呼び出しを使用してMySQLデータベースを更新し、次に別の呼び出しを使用してデータベースを読み取り、ページのテーブルを更新しています。私の問題は、データベースを正しく更新することですが、2番目のAJAX呼び出し(関数でラップされている)が古いデータを返しています。しかし、関数を再度起動すると、完全に機能します。

これが最初のAJAX呼び出しです:

$.ajax ({
cache: false,                   
type:   'POST',     
url:    'qry_creats_record.php',
data:   {   
        equipID : $('#equip_id').val(),
        dateSent : $('#txt_to_repair').val(),
        organization : $('#organization').val(),
        success: function() {
        ServiceTable($('#equip_id').val());   <--CALLS SECOND FUNCTION                  
        }
    }           
}); 

うまく機能し、データベースを完全に更新します。次に、この関数(最初の呼び出しの「成功」部分で呼び出されます)でページを更新します。

function ServiceTable(equipID) {
  var serviceRecords = $.ajax ({
  cache: false,                 
  type: 'POST',
  url: 'qry_show_repairs_table.php',
  async: false,
  data: {  equip_id : equipID   
        },
    success: function() {
      return data;
    }
}).responseText;
$('#serviceRecordsTable').html(serviceRecords);     
}

2番目の関数もうまく機能し、ボタンから呼び出すとページ要素'serviceRecordsTable'を更新します。しかし、最初の呼び出しの「成功」部分から呼び出すと、更新されていない古いデータが返されます。2番目の関数に「アラート」ボックスを配置して、何が起こっているかを確認します。これにより、関数がデータベースからの古い、事前に更新されたデータを実際に認識していることが確認されます。しかし、ページのボタンから2番目の関数をアクティブにすると、2番目の関数が新しいデータでページを更新します。

本当に立ち往生。どんな助けでも大歓迎です。

4

1 に答える 1

3

このようにしてみてください-

$.ajax ({
cache: false,                   
type:   'POST', 
url:    'qry_creats_record.php',
data:   {   
      equipID : $('#equip_id').val(),
     dateSent : $('#txt_to_repair').val(),
     organization : $('#organization').val(),

 },
  success: function(result) {
    if(result=='success') {
    ServiceTable($('#equip_id').val());   <--CALLS SECOND FUNCTION  
   }                
    }          
}); 

'qry_creats_record.php'から文字列"success"を返します。

于 2012-05-04T04:06:26.330 に答える