2010-04-15 8 views
0

J'ai un problème lorsque j'ai une vue partielle qui renvoie du code HTML à afficher. Son appelé quand quelque chose est cliqué sur la page en utilisant jquery. Le problème est que peu importe comment je l'appelle, je récupère une chaîne vide, même si elle rapporte le succès. Cela m'arrive en utilisant Chrome, contre ma machine locale.L'appel d'une vue partielle MVC2 à l'aide de jquery renvoie une chaîne vide

Mon contrôleur ressemble à ceci:

public ActionResult MyPartialView() 
{ 
    return PartialView(model); 
} 

J'ai essayé jquery en utilisant .get(), .post() et .load() et tous ont les mêmes résultats. Voici un exemple utilisant .post():

$.post(url, function (data) 
{ 
    alert(data); 
}); 

Le résultat revient toujours en tant que chaîne vide. Je peux naviguer vers la vue partielle dans le navigateur manuellement et je récupère le code HTML désiré. L'URL que j'utilise pour l'appeler, j'ai résolu complètement donc il ressemble à "http://localhost/controller/mypartialview" plutôt que d'utiliser le chemin relatif de "/ controller/mypartialview" que je pensais être le problème original. Une idée de ce que cela peut causer?

Répondre

0

Je l'ai compris. Au début, je pensais que je devais résoudre complètement l'URL en commençant par le http: // mais j'ai accidentellement oublié d'inclure le port que le serveur web visual studio utilisait. Il a simplement utilisé http://localhost/ au lieu de http://localhost:2858/ comme base. Une fois que je l'ai modifié pour utiliser le chemin relatif à la place, il a commencé à fonctionner. Je suppose que jquery résout pour vous les chemins relatifs en fonction de l'URL de la page en cours dans les méthodes ajax.

0

Il est difficile de dire quel est le problème. Si vous avez une vue correcte de votre code HTML lors de l'accès à la même URL via le navigateur, cela signifie que votre côté serveur est bon à faire (w/HTTP GET).

  • Alors je dirais que le problème est dans l'utilisation de jQuery. Essayez de coder l'url dans le code jQuery, afin de vous assurer que jQuery obtient la bonne url.

    $.get( 'http://localhost/controller/mypartialview', function(data){ alert(data); } );

  • Avez-vous mis les $.ajax options globales? (Pas ce dont vous avez besoin, juste peut-être vous avez déjà créé quelque chose, et cela gâche votre nouvelle demande)

  • Assurez-vous que vous n'envoyez aucune requête lorsque vous accédez au navigateur. Ce qui pourrait le faire fonctionner via le navigateur et non via jQuery.

Je recommande vraiment vous installer Firefox et Firebug, pour faire un meilleur débogage de vos requêtes AJAX.

+0

Je vais essayer. J'ai utilisé les outils de développement de chrome et regardé la demande dans l'onglet des ressources .. il montre la réponse correcte, mais rien dans la réponse. très bizarre. Je me demande si cela a quelque chose à voir avec l'utilisation du processus hôte de Visual Studio au lieu de IIS. – Jason