我通过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。
我尝试过大多数帖子和博客,但无法找到我出错的地方。请帮忙。
答案 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(或相同的调试系统)以深入挖掘对象。使调试更容易。