2011-10-25 1 views
0

Je ne sais pas pourquoi cela se produit car il y a d'autres fonctions dans cette page qui utilisent aussi getJSON et elles fonctionnent. J'ai le code JavaScript suivantgetJSON n'appelle pas l'action du contrôleur

function openSOPNotesDialog() { 

     var url = '<%: Url.Action("GetSOPNote", "SalesOrder") %>'; 
     var id = <%: Model.SodID %>; 

     $.getJSON(url, { sodId : id }, function(data) { 
      alert("data: " + data); 
      $("#hidSOPSODId").val(data.SodID); 
      $("#hidNoteId").val(data.NoteID); 
      $("#txtSOPNotes").val(data.Description); 
      $("#sopNotesDialog").dialog("open"); 
     }); 

    } 

et j'ai cette méthode sur la classe SalesOrderController

public JsonResult GetSOPNote(int sodId) 
     { 
      var service = new SodSrv(); 
      var note = service.GetSOPNotes(sodId); 
      return Json(note, JsonRequestBehavior.AllowGet);    
     } 

Cependant, la méthode est jamais appelé dans le débogueur et les données sont renvoyées comme nulle (ce qui est ce que Je m'attendrais à). Comme je l'ai déjà dit il y a d'autres appels dans cette page et ils font aussi des requêtes GET donc je ne sais pas quelle peut être la cause.

+0

une fois vérifiez votre service et dao peut être un problème avec ces deux fichiers? – Unknown

+0

Vérifiez si la réponse est envoyée/reçue dans votre enregistreur NET dans IE Developer/Firebug –

+0

Vous êtes sûr que la réponse d'action au type de données: json? –

Répondre

1

Sons comme le navigateur tire les données du cache, car il est une requête get. Assurez-vous de ne définir aucun en-tête de cache sur le serveur s'il n'est pas destiné à être mis en cache.

0

Essayez d'ajouter un gestionnaire error pour essayer de traquer ce que la question est:

$.ajax({ 
    dataType: 'json', 
    url: url, 
    data: { sodId : id }, 
    success: function(data) { 
     alert("data: " + data); 
     $("#hidSOPSODId").val(data.SodID); 
     $("#hidNoteId").val(data.NoteID); 
     $("#txtSOPNotes").val(data.Description); 
     $("#sopNotesDialog").dialog("open");       
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     alert("oops: " + textStatus + ": " + jqXHR.responseText); 
    } 
}); 
+0

Pour une raison étrange après l'avoir modifié comme vous l'avez écrit ici, cela a fonctionné. Encore plus bizarre, c'est maintenant après avoir retourné à la façon dont il était avant qu'il ne fonctionne à nouveau. Cela aurait-il pu être quelque chose avec IE Cache? – groovejet

0

Je suppose que la raison est que getJSON utilise la méthode et les contrôleurs normalement autorisés à accepter uniquement les méthodes post. C'est facile à vérifier en utilisant n'importe quel firebug du navigateur par exemple.

Questions connexes