Ma classe de modèle de données se présente comme suit:
[DataContract] public class Commande {[DataMember] public ssortingng Id {get; ensemble; } [DataMember] public ssortingng AdditionalInstructions {get; ensemble; } [DataMember] public double TotalAmount {get; ensemble; } [DataMember] public DateTime OrderDate {get; ensemble; } [DataMember] public Client Client {get; ensemble; } [DataMember] public OrderedProduct OrderedProduct {get; ensemble; }} [DataContract] public class OrderedProduct {[DataMember] public int Id {get; ensemble; } [DataMember] chaîne publique Nom {get; ensemble; } [DataMember] public double Price {get; ensemble; } [DataMember] public int Quantity {get; ensemble; }} [DataContract] public class Client {[DataMember] public ssortingng FirstName {get; ensemble; } [DataMember] chaîne publique LastName {get; ensemble; }}
Mon contrat d’exploitation de la WCF est:
[WebInvoke (ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] [OperationContract] ssortingng SaveOrder (Ordre de la commande);
Mon appel ajax ressemble à:
fonction SaveOrder () { var orderJson = { AdditionalInstructions: $ ("span: first"). Text (), Client: {Prénom: $ ("# Prénom"). Val (), Nom: $ ("# Nom"). Val ()}, OrderedProduct: {Id: $ ("# productList"). Val (), quantité: $ ("# quantité"). Val ()} }; // la publication sur votre service Web ou votre page $ .ajax ({ type: "POST", // GET ou POST ou PUT ou DELETE verbe url: "http: // localhost: 14805 / OrderService.svc / SaveOrder", // emplacement du service data: orderJson, // données envoyées au serveur contentType: "application / json; charset = utf-8", // type de contenu envoyé au serveur dataType: "json", // Format de données attendu du serveur processdata: false, // True ou False success: function (result) {// Appel de service réussi alerte (résultat); }, error: function (result) {// Lorsque l'appel de service échoue alert ('Echec de l'appel de service:' + result.status + '' + result.statusText); } }); }
Mais lorsque je passe cet appel, je reçois le statut 400: mauvaise demande. Voici à quoi ressemble l’en-tête dans Google Chrome:
URL de la demande: http: // localhost: 14805 / OrderService.svc / SaveOrder Méthode de demande: POST Code de statut: 400 Bad Request En-têtes de demande Accepter: application / json, text / javascript, * / *; q = 0,01 Jeu de caractères accepté: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3 Accept-Encoding: gzip, deflate, sdch Accepter-Langue: en-US, en; q = 0.8 Connexion: Keep-Alive Longueur du contenu: 165 Type de contenu: application / json; jeu de caractères = UTF-8 Hôte: localhost: 14805 Origine: http: // localhost: 14805 Référent: http: // localhost: 14805 / index.html Agent utilisateur: Mozilla / 5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit / 534.16 (KHTML, comme Gecko) Chrome / 10.0.648.127 Safari / 534.16 X-Demandé-Avec: XMLHttpRequest Charge utile de la demande AdditionalInstructions = dbl-click + ici + à + append + notes! & Client% 5B Prénom:% 5D = asdf & Client% 5BLastName% 5D = Fdsa & Produit commandé% 5BId% 5D = 3 & Produit commandé% 5BQuantity% 5B = 12 En-têtes de réponse Cache-Control: privé Connexion: Fermer Longueur du contenu: 1647 Type de contenu: text / html Date: lundi, 07 mars 2011 à 19:14:57 GMT Serveur: Serveur de développement ASP.NET / 10.0.0.0 X-AspNet-Version: 4.0.30319
S’il vous plaît laissez-moi savoir comment je peux rectifier cela.
Merci, Arun
La résolution de ce problème posait deux problèmes. 1. Un bug dans mon service lui-même (c’est mon mauvais) 2. Je l’ai fait à JSON.ssortingngify () sur l’object orderJson.
fonction SaveOrder () { var orderJson = { AdditionalInstructions: $ ("span: first"). Text (), Client: { Prénom: $ ("# prénom"). Val (), Nom: $ ("# nom"). Val () }, Produit commandé: { Id: $ ("# productList"). Val (), Quantité: $ ("# quantité"). Val () } }; // la publication sur votre service Web ou votre page $ .ajax ({ type: "POST", // GET ou POST ou PUT ou DELETE verbe url: "http: // localhost: 14805 / OrderService.svc / SaveOrder", // emplacement du service data: JSON.ssortingngify (orderJson), // données envoyées au serveur contentType: "application / json; charset = utf-8", // type de contenu envoyé au serveur dataType: "json", // Format de données attendu du serveur processdata: false, // True ou False success: function (result) {// Appel de service réussi RedirectToMvcApp (résultat); }, error: function (request, error) {// Lorsque l'appel de service échoue alert ('Echec de l'appel de service:' + request.status + '' + request.statusText); } }); }