我不確定來自WCF的JSON響應出了什麼問題,但它沒有正確解析。我可能犯了一個簡單的錯誤,希望有人能發現它。我正在使用VS 2008 Pro SP1。WCF中的REST風格的服務方法
當我直接導航到URL時,Chrome認爲它是一個文件下載。當我點擊flickr的服務時,它在瀏覽器正文中返回一個內聯字符串,這讓我覺得我的內容發送不正確。
服務
[ServiceContract]
public interface IFoo
{
[OperationContract]
[WebGet(UriTemplate = "/foos/", ResponseFormat = WebMessageFormat.Json]
Foo[] GetFoos();
}
型號
// 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>');
});
});
});
當我看到在F響應iddler我看到:
[{"Id":1,"Name":"Foo1"},{"Id":2,"Name":"Foo2"},{"Id":3,"Name":"Foo3"}]
更新
下面是小提琴手原標題爲響應比較(我對Flickr的)
礦
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
它看起來最大的區別是我有應用程序/ json和他們有應用程序/ x-javascript。正如我上面提到的,我在操作合同上使用了WebMessageFormat.Json。
感謝您的任何幫助。
什麼內容類型是小提琴手說你從你的服務和flickr收到? – 2009-12-11 14:58:02
好問題,我已更新OP – blu 2009-12-12 00:32:01