J'ai un exemple relativement simple d'une page MVC qui utilise jQuery pour faire un POST pour obtenir des données JSON et puis juste afficher un message succès/échec quand c'est fait. Le code fonctionne parfaitement bien dans les autres navigateurs mais dans IE7/8 il semble échouer 4/5 fois.
Voici le MVC Voir la page:
<asp:Content runat="server" ContentPlaceHolderID="MainContent">
<p id="message"></p>
</asp:Content>
<asp:Content runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type:"POST",
url: "<%= Url.Action("GetData") %>",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){
$("#message").html("success");
},
error: function(XMLHttpRequest, textStatus, errorThrown){
$("#message").html("error: " + textStatus + "<br/>exception:" + errorThrown);
}
});
});
</script>
</asp:Content>
Le contrôleur est assez simple ainsi:
[HttpPost]
public ActionResult GetData()
{
IList<string> people = new List<string>
{
"A",
"B",
"C",
"D",
"E"
};
return Json(people);
}
Il semble échouer dans IE 4 sur toutes les 5 fois environ. Je mets du code de journalisation dans le contrôleur et appelle l'action du contrôleur à chaque fois, même en cas d'échec. Est-ce que quelqu'un voit quelque chose que je fais mal ici?
Lorsqu'il atteint ma fonction de gestionnaire d'erreur, textStatus est simplement défini sur "error" et errorThrown est indéfini.
essayez avec '{}' (ou 'null') au lieu de' "{}" 'comme données. Je ne sais pas si c'est le problème, mais envoyer '" {} "' Je ne crois pas va traduire à une paire clé/valeur valide. Edit: Vous venez de réaliser votre envoi de JSON à l'action, mais à moins que vous n'ayez configuré un classeur JSON, cela pourrait être le problème. –
Cela a fonctionné! Si vous voulez le soumettre comme réponse, je le marquerai comme répondant. – Dismissile