2014-04-02 72 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。