2013-01-17 5 views
0

Je l'appel ajax suivantAucune indication jquery appel ajax complète

function update_ledger_amount(id) { 
    $.ajax({ 
     type: "POST", 
     url: "/ledgeritems/UpdateAmount", 
     data: "Id=" + id + "&Amount=" + $('#ledger_edit_amount_input_' + id).val(), 
     success: function (str) { 
      var result = str.split('|'); 
      alert(str); 
      if (result[0] == 'success') { 
       set_display_message('Item updated', 'success'); 
       load_ledger_month($('#BankAccountId').val(), $('#StartDate').val()); 
      } 
      else { 
       alert('bad'); 
       set_display_message(result[1], 'error'); 
      } 
     }, 
     error: function (request, status, error) { 
      alert(error); 
     } 
    }); 
} 

Le problème que je vais avoir est que je reçois aucune alerte sur le succès ou l'erreur. Regarder le trafic via Firebug je peux voir la réponse est un simple

success 

Je crois que le problème pourrait avoir à voir avec le type de contenu de la réponse, il montre que text/javascript. Je pense peut-être que je dois faire quelque chose de différent pour gérer ce type de contenu. Mettez un bloc try catch dans votre gestionnaire de succès.

+3

Alors ne nous laisse pas traîner .. ça marche quand vous changez le type de contenu de la réponse? –

+0

@ExplosionPills - sacrément bien. Cependant je parie que cette ligne de questionnement mène à une expansion de l'esprit de homeboy en termes de cycle de vie de demande/réponse - ./headbangs - j'espère qu'ils résolvent ou renvoient –

+0

Si cela fonctionnait je ne demanderais certainement pas l'aide. – Jhorra

Répondre

0

utilisation dataType comme JSON et envoyer la réponse JSON dans votre contrôleur (php) .. vous pouvez le faire par ... echo json_encode(array('success'=>'success'))

JQUERY

$.ajax({ 
    type: "POST", 
    url: "/ledgeritems/UpdateAmount", 
    data: "Id=" + id + "&Amount=" + $('#ledger_edit_amount_input_' + id).val(), 
    dataType:'json', 
    success: function (str) { 
     alert(str.success); //in mycase.. you can do your stuff here 
     /*var result = str.split('|'); 
     alert(str); 
     if (result[0] == 'success') { 
      set_display_message('Item updated', 'success'); 
      load_ledger_month($('#BankAccountId').val(), $('#StartDate').val()); 
     } 
     else { 
      alert('bad'); 
      set_display_message(result[1], 'error'); 
     }*/ 
    }, 
    error: function (request, status, error) { 
     alert(error); 
    } 
}); 

PHP

..... 
echo json_encode(array('success'=>'success')); 

cela envoie le succès comme json et vous pouvez obtenir cela dans success fonction de ajax

+0

Je pense que c'est probablement la meilleure route à suivre. – Jhorra

+0

merci ... :) .. codage heureux – bipen

0

Je suppose qu'il échoue à cette ligne

ar résultat = str.split ('|');

+0

Cela devrait être un commentaire –

+0

Je regarde avec Firebug et je ne reçois aucune erreur. – Jhorra

+0

Pouvez-vous au moins mettre une alerte avant cette instruction split pour voir si elle atteint là? – gurvinder372

0

Vous faites un POST ajax pas GET. La partie de données de la ajax devrait être sous forme de:

data: { name: "John", location: "Boston" } 
0

Retirez la ligne

type = "POST", 

parce que vous voulez ajouter à l'url params avec votre demande. A partir du succès de jQuery 1.8, les erreurs et la complétion sont obsolètes, utilisez done, fail et allways à la place. http://api.jquery.com/jQuery.ajax/#jqXHR

La syntaxe pour un POST serait comme:

data = {id:"something", Amount:"someval"};