2014-04-02 116 views
1

我正在通過jquery ajax調用來調用Web服務。從服務返回的響應似乎是罰款,如下圖所示在瀏覽器中檢查時:從Web服務返回的JSON數據顯示爲undefined

<string xmlns="http://tempuri.org/"> 
{"Table":[{"stgr_grn_no":"H1B1G00679","stgr_slno":1174.0}]} 
</string> 

當我打通jQuery的AJAX調用相同,則顯示爲未定義。

var param = {GRNNumber: GRNNumber};    
     $.ajax({ 
       type: "GET", 
       datatype: "json", 
       url: url,  
       data: param,  
       beforeSend: function (XMLHttpRequest) { 
         XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
       }, 
       success: (function (data, textStatus, jqxhr) { 
        var cont = data.Table; 
        alert(cont); 
        for (var i in cont) 
        { 
         alert(cont[i].stgr_grn_no); 

        }  

       }), 

       error: (function(request, status){ 
       var err = status + ", " + JSON.stringify(request) + "ERROR:"; 
       alert(err); 
      }) 


      }); 

這裏的「數據」是表示作爲對象文檔,
「CONT」被顯示爲未定義。
當我嘗試提醒「jqxhr」參數時,它顯示了來自Web服務的所有數據,狀態正常。 我嘗試了大部分帖子和博客,但無法找到我出錯的地方。請幫忙。

+0

但是,響應是XML,包含JSON的XML - 而不是JSON。 – Philipp

回答

0

試試這個:

var cont = data.Table;  
alert(cont); 

有你的JSON對象沒有st_grn

作爲提示: 更改爲console.log(data)和firebug for Firefox(或同等調試系統)以深入挖掘對象。使調試更容易。

+0

對不起,我錯誤地提到data.st_grn。它的data.table只顯示未定義。 – Sarulatha

2

此:

<string xmlns="http://tempuri.org/"> 
{"Table":[{"stgr_grn_no":"H1B1G00679","stgr_slno":1174.0}]} 
</string> 

...是不是JSON。它帶有一些JSON而不是XML。

作爲傳遞數據的方法,這太瘋狂了。您應該修復Web服務,以便它只是返回JSON,或者使其以純XML表示數據,而不是混合使用XML和JSON。

如果你不能這樣做,那麼你必須首先將Ajax響應解析爲XML,從中提取JSON(它將類似於rootElement.firstChild.data),然後將其解析爲JSON。