2009-12-17 56 views
1

我有一個返回這個響應web服務:道場新手閱讀Web服務的JSON響應

<string xmlns="http://tempuri.org/">{ "H...[ { "ID":"1","Name":"Test"} ]}</string> 

當我試圖得到的迴應後,我不斷收到錯誤: 「失蹤;語句之前」

我剛開始進入這個,所以我可能做了一些非常錯誤的事情。

爲什麼響應不適合我?

我的道場的代碼看起來這

var targetNode = document.getElementById("foo"); 

    var def = dojo.io.script.get({ 
     url: "http://localhost/WebData/PublicData.asmx/HelloWorld", 
     timeout: 30000, 
     handleAs: "json", 
     preventCache: true, 
     handle: function(error, ioargs) { 
      var message = ""; 
      switch (ioargs.xhr.status) { 
       case 200: 
        message = "Good request."; 
        break; 
       case 404: 
        message = "The requested page was not found"; 
        break; 
       case 500: 
        message = "The server reported an error."; 
        break; 
       case 407: 
        message = "You need to authenticate with a proxy."; 
        break; 
       default: 
        message = "Unknown error."; 
      } 
      targetNode.innerHTML = message; 
     } 
    }); 

感謝狀! david

+0

該示例中的json片段已損壞。我認爲這樣做是爲了縮短這個例子。否則你需要修復... – 2009-12-22 15:10:29

+0

http://stackoverflow.com/q/1923121/420613的副本 – 2011-12-07 05:35:07

回答

1

get函數試圖將響應解析爲純json,因爲handleAs屬性設置爲'json';但實際上響應是一個包含一些json文本的xml文檔,導致了您的錯誤。

要麼改變到純JSON的反應,這樣的:

{ "H": [ { "ID":"1","Name":"Test"} ]} 

handleAs屬性設置爲'xml'和解析以提取JSON內容的響應;您可以使用dojo.fromJson解開json字符串。