2009-12-17 63 views
0

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

<string xmlns="http://tempuri.org/">{ "Head":[ { "ID":"1","Name":"David"} ]}</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

回答

1

您的服務器響應將類似XML的數據(<string xmlns="http://tempuri.org/">)與JSON混合在一起。

對於道場處理使用handleAs: 'json'響應,你需要你的服務器只返回純JSON數據,即只

{ "Head":[ { "ID":"1","Name":"David"} ]} 

如果做不到這一點,你需要處理的響應文本,去掉標籤和然後解析JSON內容。作爲常規提示「缺少;聲明之前」通常意味着錯誤的JSON。

編輯

我剛剛注意到你的句柄函數的第一個參數是「error」。處理函數的第一個參數包含服務器的響應(在這種情況下,基於接收到的JSON的JavaScript對象)。

+0

感謝您的信息。 那麼,我如何得到響應是純json? 或者我怎樣才能得到該字符串到一個變量,以便我可以解析出xml的東西? \ 當我嘗試加載到一個變量的響應,並將其轉換爲一個字符串它仍然給我的錯誤。 有什麼方法可以從Web服務返回純JSON嗎? 再次感謝您的幫助。 – user226596 2009-12-17 17:05:23

+0

如果可以,請更改服務器端以僅返回JSON。如果你不能,你需要使用handleAs:'text',然後用正則表達式巧妙地做一些事情(這些不是我的強項,但我確信別人可以在那裏打開) – Jez 2009-12-17 17:08:20

+0

澄清 - 字符串將在您的句柄函數的第一個參數。 – Jez 2009-12-17 17:10:05