2009-09-14 9 views
3

Je fais un post jQuery AJAX comme ceci:Poster avec jQuery AJAX pour ASP.NET MVC 1.0

var form = $("#formid"); 
    form.submit(function() 
    {  
    $.ajax(
    { 
     type: "POST", 
     url: form.attr("action"), // points to NewClient 
     data: form.serialize(), 
     success: function(msg) { alert('ok ' + msg); }, 
     error: function(req, status, err) { alert('err=' + err + ' status=' + status); } 
    }); 
    return false; 
    }); 

Du côté ASP.MVC j'ai quelque chose comme ceci:

[AcceptVerbs(HttpVerbs.Post)] 
public virtual ActionResult NewClient() 
{ 
    // just a test... 
    return null; 
} 

Quel est le bon type de résultat pour la fonction NewClient pour que jQuery fonctionne correctement? Comme c'est le cas maintenant, il fonctionne dans FF et Chrome, mais échoue dans IE8 (fonctionne dans IE7) - IE8 je reçois l'alerte d'erreur (éditer: l'erreur était due à un "débogueur;" appel dans l'appel JS). Dans tous les cas, ce qui est la méthode recommandée pour: (. Le $() sérialisation() semble fonctionner très bien, est-ce la méthode recommandée?)

  • Passez un entier formulaire ASP.NET MVC via jQuery
  • Du côté du serveur pour renvoyer soit le succès ou l'échec, et si elle échoue une sorte de message que je pourrais afficher au client. Comment puis-je dire à jQuery que la méthode/l'appel a échoué ou non?

Merci.

EDIT:

Le HTML ressemble à ceci:

<form id="formid" action="/client/newclient"> 
    ... input fields ... 
</form> 

Répondre

4

form.serialize() est la bonne façon d'afficher un formulaire dans jQuery.

En termes de gestion des erreurs, vous avez l'essentiel. jQuery considérera uniquement que la demande a échoué si le serveur renvoie un code HTTP d'échec. Si vous voulez déterminer un "échec logique", c'est-à-dire que votre application a échoué et que vous voulez retourner une réponse html/json indiquant ce qui s'est mal passé (ce qui aurait un code HTTP valide), vous devez ajouter un drapeau d'erreur. réponse, et vérifiez-le dans le gestionnaire "succès". J'ai toujours aimé l'approche Ben Nadel's. J'ai également answered a similar question before avec un exemple de code assez détaillé. Avant de restructurer tout votre code jQuery, je voudrais regarder ce qui se passe dans IE8 avec un outil comme Fiddler.

+0

Je le regarde en ce moment en essayant de comprendre pourquoi cela ne fonctionnera pas avec IE8. – pbz

+0

Il semble que j'ai eu le message d'erreur parce que j'avais un "débogueur" dans le code JavaScript; pour une raison quelconque, il n'aime pas ça. Si je le retire, ça fonctionne bien. – pbz

+0

J'aime la solution dans votre message. Je vous remercie! – pbz

Questions connexes