2008-11-25 6 views
4

Je teste les bases de l'échange de messages de repos entre un site mvc asp.net et un service WCF 3.5. Le service est construit en utilisant le modèle trouvé dans le kit de démarrage WCF REST trouvé sur codeplex. Je voudrais échanger des messages json en utilisant jquery. Le service REST Singleton fonctionne correctement et fournit également des exemples de tous les appels possibles en ajoutant le paramètre d'aide à la fin de l'uri. J'arrive à effectuer des requêtes GET avec le jquery $ .getJSON intégré. J'ai des problèmes pour faire le PUT (pour mettre à jour les valeurs) et POST.Communication Jquery Rest avec WCF 3.5

$.ajax({ 
    type: "PUT", 
    dataType: "json", 
    url: "http://localhost:1045/Service.svc/?format=json", 
    data: '{"Value":testvalue}' 
}); 

Quelle est la meilleure approche pour cela? Est-il possible de ne pas utiliser Mme Ajax du tout et est-il correct de la contourner?

Répondre

4

"PUT" et "DELETE" ne sont pas pris en charge par tous les navigateurs selon jQuery

Le type de demande de faire ("POST" ou "GET"), par défaut est "GET". Remarque: Les autres méthodes de requête HTTP, telles que PUT et DELETE, peuvent également être utilisées ici, mais elles ne sont pas prises en charge par tous les navigateurs .

http://docs.jquery.com/Ajax/jQuery.ajax#options

Je ne comprends pas vraiment votre question cependant. Avez-vous un problème à faire un PUT et un POST ou juste un POST? Est-ce que l'EEG fonctionne bien?

Une erreur que j'ai remarquée était vos données, notez que je l'ai ajouté sans guillemets.

$.ajax({ 
    type: "PUT", 
    dataType: "json", 
    url: "http://localhost:1045/Service.svc/?format=json", 
    data: { Value: "testvalue" } 
}); 
+0

Salut Nick, merci d'avoir corrigé l'exemple. Pour clarifier mon POST et PUT également avec le code correct les deux méthodes retournent un ParseError ... – Ronnie

5

Assurez-vous également que vous avez votre contentType correctement défini dans votre appel ajax.

contentType: "application/json"

La valeur par défaut est JQuery

contentType: "application/x-www-form-urlencoded"

0

Les verbes PUT et DELETE ne sont pas activés sur tous les serveurs. Vous devez placer ces verbes dans un en-tête X-HTTP-Method-Override. Le valeu est extrait de l'en-tête et remplacé par un POST jsut normal avant le traitement de la requête.

Le plugin jQuery jREST peut vous aider. Si vous utilisez WCF, vous devrez également implémenter RequestInterceptor (recherchez XHttpMethodOverrideInterceptor pour les détails de mroe).

Questions connexes