jQuery AJAX fonctionne pour revenir mvc 3 vue partielle, mais jQuery charge n'est pas
Je suis en train de remplir un div avec une vue partielle en MVC 3. Mon contrôleur ressemble à ceci:
[HttpPost]
public ActionResult GetCustomerList(string searchString)
{
var custService = new CustomerViewModels();
var custListVM = custService.GetSearchList(searchString);
return PartialView("GetCustomersList", custListVM);
}
et mon jQuery appel ressemble à ceci:
function getCustomerList(searchCriteria) {
$.ajax({
url: 'Home/GetCustomerList',
type: 'POST',
async: false,
data: { searchString: searchCriteria },
success: function (result) {
$("#customerTabBody").html(result);
}
});
};
Il fonctionne très bien. J'ai commencé à me demander si je pouvais utiliser la méthode load de jQuery pour faire la même chose avec beaucoup moins de code et a écrit ceci:
function getCustomerList(searchCriteria) {
$("#customerTabBody").load('Home/GetCustomerList', { searchString: searchCriteria });
};
Il renvoie un message d'erreur indiquant que la ressource ne peut pas être trouvé. J'ai essayé à l'aide de @Url.L'Action, mais il encode le même contrôleur que j'ai codé en dur. Dans Firebug, je peux voir que l'URL qui est affiché est le même et le paramètre searchString est au format identique dans les deux cas.
Quelle est la différence - pourquoi ne charge pas de travail?
Grâce
- Pourquoi vous mettez-vous async: false dans le $.appel ajax?
- J'ai besoin de garder à l'utilisateur de continuer à se taper des caractères et pendant que j'attends la réponse.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce pour voir si elle fonctionne?
Je suis assez certain que votre .load() appel exécute une requête GET plutôt que d'un POSTE. MVC 3 et la plupart des autres .NET AJAX opérations (méthodes décoré comme un WebMethod, telles que les services web et les méthodes de page) nécessitent que les données soient Affichées. Dans ce cas, vous aurez simplement besoin de coller avec ce qui fonctionne. Comme vous pouvez le voir dans votre travail $.ajax() l'appel, la demande de la méthode est POST. Si vous voulez à court de main une partie du code, l'utilisation .ajaxSetup() combiné avec .post().
HttpPost
. La seule exception est les méthodes qui retournent résultat json. même dans ce cas, vous pouvez permettre àGet
demandes commereturn Json(data,JsonRequestBehavior.AllowGet);