2015-10-05 1 views
-2

J'ai une application qui génère une table via ajax, chaque ligne de la table a une colonne/champ de saisie pour la date de planification. Une fois la date de programmation entrée, le bouton de mise à jour de cette ligne est cliqué et mon deuxième appel ajax est déclenché.Appel Ajax échoue parfois et parfois Works?

Problème J'ai, en sélectionnant la date et cliquez sur le bouton de mise à jour parfois le système fonctionne et parfois ce n'est pas .. voir mon code - J'espère que quelqu'un peut faire la lumière.

Ajax Premier appel:

$('.datepicker').datepicker({ 
       todayHighlight:'TRUE', 
       autoclose: true, 
      }) 

    $.post('assets/ajax/calldata/newords.php', function(data) { 
     $('#newords').html(data) 
     $('.datepicker').datepicker({ 
       todayHighlight:'TRUE', 
       autoclose: true, 
      }) 
    }); 

sortie de la première Ajax Appel

<table> 

    <thead> 
    <tr> 
    <td>#<td> 
    <td>Account</td> 
    <td>Date to Scedule</td> 
    <td>Action</td> 
    <tr> 
    </thead> 

    <tbody> 
    <tr> 
     <td>1</td> 
     <td>Test Account</td> 
     <td> 
      <input class="datepicker form-control" type="text" id="datetoprint" name="datepicker" data-date-format="dd/mm/yyyy" placeholder="dd/mm/yyyy"> 
     </td> 
     <td> 
      <button class="btn btn-default markScheduled" type="button" id="markScheduled" ordid="56">Scheduled</button> 
     </td> 
    </tr> 
    </tbody> 
</table> 

Deuxième Ajax appel après avoir cliqué sur la mise à jour sur la ligne:

$(document).on('click', 'button.markScheduled', function(e) { 

     var ordid = $(this).attr('ordid'); 
     var scheduledate = $('input.scheduleDate').val(); 

     $.ajax({ 
      url: "assets/ajax/order.php", 
      type: "POST", 
      data: {ordid: ordid,date: scheduledate}, 
      success: function(result){ 

      }, 
      error: function(exception){ 
       alert('Exception:' +exception); 
      } 
     }); 

     $.post('assets/ajax/calldata/newords.php', function(data) { 
      $('#newords').html(data) 
      $('.datepicker').datepicker({ 
       todayHighlight:'TRUE', 
       autoclose: true, 
      }) 
     }); 

    }); 

Je ne reçois aucune erreur, ce système actualise la base de données prend parfois la valeur de l'entrée et parfois non .. parfois, vous devez actualiser manuellement la page pour que l'entrée ne soit plus à l'écran ..

+0

Et quand il échoue, avez-vous un y erreur ??? Mais il semble que vous devriez appeler la deuxième requête ajax ** seulement ** une fois que le premier a terminé/réussi –

+0

voir dans la console quand il échoue .... essayez de mettre le $ .post dans votre succès $ .ajax et voir. –

+0

Je ne reçois aucune erreur, ce système actualise la base de données prend parfois la valeur de l'entrée et parfois pas .. parfois vous devez actualiser manuellement la page pour que l'entrée ne soit plus à l'écran .. –

Répondre

0

contexte dans votre question pour la rendre plus claire, mais semble que vous devriez appeler post demande qu'une seule fois ancienne demande que succeded, par exemple:

$(document).on('click', 'button.markScheduled', function (e) { 

    var ordid = $(this).attr('ordid'); 
    var scheduledate = $('input.scheduleDate').val(); 

    $.ajax({ 
     url: "assets/ajax/order.php", 
     type: "POST", 
     data: { 
      ordid: ordid, 
      date: scheduledate 
     }, 
     error: function (exception) { 
      alert('Exception:' + exception); 
     } 
    }).done(function() { 
     $.post('assets/ajax/calldata/newords.php', function (data) { 
      $('#newords').html(data).find('.datepicker').datepicker({ 
       todayHighlight: 'TRUE', 
       autoclose: true 
      }); 
     }); 
    }); 
}); 

ce qui est dit, vous auriez mieux d'utiliser une seule demande de mettre à jour la base de données et la manipulation résultat retourné à la page ...

+0

Comment puis-je sortir sur la console chrome? –