2012-03-25 101 views
1

我可以使用另一組眼睛 - 也許我錯過了一些明顯的東西。我寫了一個WCF服務來從我的sql服務器數據庫返回一些基本數據。它似乎功能正常。現在我只是想將數據轉儲到我的網頁上是這樣的:無法訪問從WCF正確返回jQuery的jsonp數據

<script type="text/javascript"> 
    $.ajax({ url: 'http://localhost:35798/restserviceimpl.svc/json/999?callback=?', 
    dataType: "jsonp", 
    success: function (data) { 
     alert(data); 
     $.each(data, function (i, item) { 
      $('#gallery').append('<p>' + i + '.'+ item + '</p>'); 
     }); 
    } 
    }); 
</script> 

使用招,它看起來對我來說,正確的格式化JSON數據被返回到我的網頁(以及警告顯示我什麼樣子的JSON數據在jsonlint.com上驗證),但是當我嘗試迭代它時,我只是爲每個'each'而不是'records'獲取一個字符。我得到800多次迭代,每次只包含JSON字符串的一個字符,而不是JSON數據的大約17個'記錄',每個記錄有兩個字段。

所以我從我的WCF得到一個字符串,看起來像'JSON,或者是我的jQuery腳本上面有一個錯誤?

回答

0

好了,我花了近2天的試用的錯誤,不知道如果我不得不在WCF端或jQuery的結束這個問題,但是這是我結束了和作品:

<script type="text/javascript"> 
$(function() { 
    $.ajax({ 
     url: 'http://localhost:35798/restserviceimpl.svc/json/999', 
     type: 'GET', 
     dataType: 'jsonp', 
     success: function (data) { 
      var obj = $.parseJSON(data); 
      $.each(obj, function (i, item) { $('#gallery').append('<p>' + item.Id + '.' + item.Name + '</p>'); }); 
     } 
    }); 
}); 

出於某種原因,我不完全理解,我不得不添加$ .parseJSON(數據)行,以便將來自我的WCF服務的'JSONP'字符串轉換爲可用的JSON,以便能夠遍歷它。這很奇怪,因爲我在這個應用程序的其他地方使用JSONP,並且不必這樣做,所以我的WCF可能發送的結果稍微不正確,我需要在我的jQuery中進行補償,但是直到我如果那是真的,我只想去做一些有用的事情。

1
  1. Content-Type標頭的值是什麼?它應該是「application/json」
  2. 服務返回的數據值是什麼?它可能像「[a,b]」而不是[a,b] - 即整個字符串可能用引號或類似的名稱。

通常腳本看起來不錯。

+0

我同意Evgeny的觀點2.通常在jQuery中,alert(data)應該顯示[object Object]而不是JSON字符串。 – 2012-03-26 11:27:03

+0

內容類型標題是'application/x-javqascript',我認爲*對於jsonp是正確的。 – 2012-03-26 17:28:44

+0

'application/x-javqascript'或application/x-javascript'?無論如何,警報應該顯示[Object object]不是一個字符串。我會建議玩的內容類型(應用程序/ JavaScript或應用程序/ JSON - 無所謂,都工作)。 – 2012-03-26 17:44:12