2009-09-19 8 views
1

J'ai une simple requête $ .ajax que j'essaie de récupérer du contenu HTML dans mon application ASP.Net MVC.Obtention de parserreur en utilisant Jquery + ASP.Net MVC sur Firefox

 // Load the claim table 
    function GetClaimTable() { 
     $.ajax({ 
      type: "GET", 
      url: "claimtable", 
      data: {}, 
      datafilter: null, 
      dataType:'text', 
      success: function(msg){ 
       alert(msg); 
       $("#claimTable").html(msg.responseText); 
      }, 
      error: function(msg, sdf, sdd) { 
       alert(sdf); 
       alert(sdd); 
      } 
     }); 

Mais j'obtiens une parserreur à la place. L'appel est réussi parce que je vois 200 OK dans firefox et l'erreur a l'objet XmlHttpRequest qui a les données correctes dans la propriété responseText.

Le code fonctionne bien dans IE mais échoue dans firefox. L'URL claimtable est une simple action MVC.

Je lis ici jQuery/ASP MVC -- parsererror in "$.ajax" calls que cela est dû à une faute de frappe qui a été résolue dans jquery 1.3.2. Mais j'ai 1.3.2 et j'obtiens cette erreur.

Une aide?

+0

pouvez-vous publier l'erreur d'analyse complète FF vous donne –

+0

il n'y a pas complet parsererror. C'est tout ce qu'il y a. C'est une chaîne: "parsererror" –

Répondre

0

J'ai finalement découvert pourquoi cela se passait. La raison était ajaxSetup que j'avais écrit pour traiter mes demandes de service Web jQuery plus facilement. Apparemment, quelque chose n'allait pas même si je remplaçais les paramètres de ma nouvelle fonction et que le parsererreur se produisait. J'ai supprimé ajaxSetup et maintenant les choses fonctionnent bien.

C'est la fonction qui a détruit 3 heures de ma vie.

$.ajaxSetup({ 
    type: "POST", 
    cache:false, 
    contentType:"application/json;charset=utf-8", 
    data:"{}", 
    dataFilter: function(data) { 
     var msg; 

     if (typeof (JSON) !== 'undefined' && 
      typeof (JSON.parse) === 'function') 
      msg = JSON.parse(data); 
     else 
      msg = eval('(' + data + ')'); 

     if (msg.hasOwnProperty('d')) 
      return msg.d; 
     else 
      return msg; 
     } 
}); 

Apparemment jolie. hein?

+0

Il est dit utf-9 ...? –

+0

C'était une faute de frappe, je l'ai corrigé. –

-1

pas besoin de faire msg.responseText. msg lui-même est le responseTExt

+0

Hmm ... Bien comme j'ai dit que la requête échoue. Dans la fonction d'erreur, msg a une propriété responseText. S'il réussissait, il ne l'aurait pas. –

0

Si vous essayez de récupérer du code HTML à partir du serveur, pourquoi spécifiez-vous dataType: 'text'? Quel en-tête ContentType votre action renvoie-t-elle? Il semble qu'il y ait une certaine incohérence entre l'en-tête ContentType que le serveur envoie et le contenu réel.

+0

J'ai aussi essayé le HTML contentType. J'ai utilisé le texte en fin de compte parce que c'est un contentType qui ne devrait pas être analysé. –

Questions connexes