从Web服务返回的JSON数据显示为undefined

时间:2014-04-02 10:28:31

标签: jquery ajax json

我通过jquery ajax调用调用Web服务。在浏览器中检查时,从服务返回的响应似乎没问题,如下所示:

<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);
            })


          }); 

这里&#34;数据&#34;显示为对象文档,
 &#34;续&#34;显示为未定义。
当我试图提醒&#34; jqxhr&#34;参数它显示来自Web服务的所有数据,状态为OK。 我尝试过大多数帖子和博客,但无法找到我出错的地方。请帮忙。

2 个答案:

答案 0 :(得分:2)

此:

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

...不是JSON。它是带有一些JSON的XML而不是它。

作为传递关于go的数据的方法,这很疯狂。您应该修复Web服务,以便它只返回JSON,或者以纯XML表示数据,而不是XML和JSON的混合。

如果你不能这样做,那么你必须首先将Ajax响应解析为XML,从中提取JSON(它将类似于rootElement.firstChild.data),然后将其解析为JSON。

答案 1 :(得分:0)

试试这个:

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

您的JSON对象中没有st_grn

作为提示: 更改为console.log(data)和firebug for Firefox(或相同的调试系统)以深入挖掘对象。使调试更容易。