2009-10-25 4 views
3

JQuery semble donner une erreur en essayant de passer un paramètre alphanumérique comme ceci:L'appel ajax JQuery ne prend pas de paramètres alphanumériques!

  $.ajax({ 
       type: "POST", 
       url: "Default.aspx/AjaxTest", 
       data: "{eventID:9a5}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        alert(msg.d); 
       }, 
       error: function(e) { 
        alert("Event could not be added to calendar"); 
       } 
      }); 

lorsque la méthode ci-dessus est appelée, le rappel d'erreur est appelée. Cependant lorsque je change le paramètre eventID à une valeur purement numérique, cela fonctionne très bien et le rappel de succès est appelé. Je voudrais passer une valeur alphanumérique à une méthode de serveur et cela ne semble pas fonctionner. Toute aide serait appréciée.

Ahmed

Répondre

1

Je viens d'apprendre comment résoudre ce problème. Il s'avère que j'obtenais un message d'erreur JSON: "primitive JSON invalide". J'ai dû ajouter des guillemets simples supplémentaires autour de mon paramètre de chaîne afin que JSON comprenne que c'était une chaîne quand elle était désérialisée. J'ai ajouté des guillemets simples autour de mes données alphanumériques afin que JSON comprenne qu'il s'agissait d'une chaîne. Voici comment mon code a fini par fonctionner:

 $.ajax({ 
      type: "POST", 
      url: "Default.aspx/AjaxTest", 
      data: "{eventID:'9a5'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       alert(msg.d); 
      }, 
      error: function(e) { 
       alert("Event could not be added to calendar"); 
      } 
     }); 

Merci à tous de toute façon.

4

Ne devriez-vous pas transmettre des données comme un dictionnaire Javascript standard?

$.ajax({ 
... 
data: {"eventID": "9a5", "SomeNumericField": 25} 
... 
}); 

(par exemple:.. Ne pas mettre des guillemets autour de vos données, je suis sûr que ce n'est pas censé être une chaîne comme ça)

+0

Vérifiez également que l'URL à laquelle vous envoyez des données accepte une valeur non numérique pour ce paramètre. Cela pourrait renvoyer une erreur. –

+0

@Bartek: Quand j'ai essayé cela, cela ne fonctionnait pas à la fois pour les caractères numériques et alphanumériques, mais cela fonctionnait bien pour les valeurs numériques auparavant. @Steve: J'ai une webmethod asp.net qui prend un argument de chaîne. Cela ne devrait-il pas suffire? –

Questions connexes