2010-04-22 4 views
0

J'essaie d'appeler une méthode de page appartenant à un contrôleur MVC d'un autre site, au moyen de:Faire une requête Ajax à une méthode de page dans ASP.NET MVC 2

$.ajax({ 
      type: "GET", 
      url: "http://localhost:54953/Home/ola", 
      data: "", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(data) { 
       console.log(data.Name); 
      } 
     }); 

le code de la méthode est comme suit, vraiment simple, il suffit de tester:

public ActionResult ola() 
    { 

     return Json(new ActionInfo() 
     { 
      Name = "ola" 
     },JsonRequestBehavior.AllowGet); 

    } 

Je l'ai vu cette aproche être suggéré ici, et je fait comme beaucoup, devrait-il fonctionner ...

Quand je lance ce, firebug obtient un 200 OK, mais le d ata reçu est nul. J'ai essayé beaucoup d'approches différentes, comme avoir les données dans le texte (souhaite m'accorde "(une chaîne vide)" au lieu de juste "null") ou renvoyant la chaîne dans la méthode de serveur ...

Pouvez-vous me dire ce que je fais mal?

Merci à l'avance,

João

+0

Quel est le modificateur d'accès à un membre de votre ActionInfo.Name? Si ce n'est pas public, il ne sera pas sérialisé dans le résultat JSON. – Jono

+0

Avez-vous essayé de déboguer le JQuery? Mettez l'instruction "débogueur"; Dans votre méthode de réussite, vous pouvez inspecter les données. – Mac

Répondre

1

Avez-vous essayé de retourner votre JSON comme si ...

public ActionResult ola() 
{ 
    return Json(new { Name = "ola" }, JsonRequestBehavior.AllowGet); 
} 
0

Vous pouvez essayer de retourner JsonResult de la méthode d'action du contrôleur. La signature de la méthode serait alors public JsonResult ola(). J'espère que cela aide.

1

Controller:

public ActionResult Ola() 
{ 
    // No need to use a custom ActionInfo type here, an anonymous type 
    // will be just fine: 
    return Json(new { Name = "ola" }, JsonRequestBehavior.AllowGet); 
} 

Vue:

$(function { 
    $.getJSON('/home/ola', function(json) { 
     alert(json.Name); 
    }); 
}); 
0

Merci pour tous les commentaires. J'ai découvert que tout ce que je faisais était juste et faux en même temps. Les demandes étaient toutes fonctionnelles, mais la demande était adressée à un domaine différent, qui est automatiquement bloqué par les navigateurs (à l'exception d'Internet Explorer). C'est une question de sécurité. Mais puisque la demande était destinée à fonctionner sur un appareil mobile, quand je l'ai testé là-bas, cela a fonctionné parfaitement.

Encore une fois, merci à tous ceux qui ont répondu, je vais adopter certaines des idées présentées ici :)

0

si vous faites un domaine de croix d'appel ajax. Avez-vous essayé de régler votre type de données à

dataType: jsonp 

jquery ajax cross domain

Questions connexes