Je ne suis pas sûr de ce qui ne va pas avec ma réponse JSON de WCF mais il n'est pas analysé correctement. J'ai probablement fait une simple erreur, j'espère que quelqu'un peut le voir. J'utilise VS 2008 Pro SP1.Méthode de service RESTful dans WCF
Lorsque je navigue directement vers l'URL Chrome pense qu'il s'agit d'un téléchargement de fichier. Quand j'ai frappé le service Flickr, il a retourné une chaîne dans le corps du navigateur, ce qui me fait penser que mon contenu est envoyé de manière incorrecte.
service
[ServiceContract]
public interface IFoo
{
[OperationContract]
[WebGet(UriTemplate = "/foos/", ResponseFormat = WebMessageFormat.Json]
Foo[] GetFoos();
}
Modèle
// this is in a separate assembly from the service
[DataContract]
public class Foo
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
JQuery
$(document).ready(function() {
$.getJSON(fooUrl, function(data) {
alert(data); // data is an object, but data.items is null
// this complains 'length is null or not an object'
$.each(data.items, function(i, item) {
fooList.append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
});
});
});
Quand je regarde la réponse en F iddler Je vois:
[{"Id":1,"Name":"Foo1"},{"Id":2,"Name":"Foo2"},{"Id":3,"Name":"Foo3"}]
Mise à jour
Voici les en-têtes brutes de Fiddler pour la comparaison de réponse (moi contre flickr)
mine
HTTP/1.1 200 OK
Content-Length: 162
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Flickr
HTTP/1.1 200 OK
Date: Sat, 12 Dec 2009 00:30:36 GMT
P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Sat, 12 Dec 2009 00:26:19 GMT
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: application/x-javascript; charset=utf-8
On dirait que la grande différence est que j'ai application/json et qu'ils ont une application/x-javascript. Comme je l'ai noté ci-dessus, j'utilise WebMessageFormat.Json sur le contrat d'exploitation.
Merci pour toute aide.
De quel type de contenu est-ce que fiddler dit que vous recevez de votre service, et de flickr? –
Bonne question, j'ai mis à jour le OP – blu