我在网页中设置了此代码。
<div id="gridResults">
</div>
<script type="text/ecmascript">
jQuery.ajax({
url: "http://localhost:6002/AggregateServices.svc/incident/10",
type: "POST",
async: true,
success:
function(json) {
var table = jQuery('<table />').attr('cellspacing', 0).attr('cellpadding', 4);
var header = jQuery('<tr />')
.append('<td>Case Number</td>')
.append('<td>Company</td>')
.append('<td>Created</td>')
.append('<td>Description</td>')
.append('<td>Stamp</td>')
.append('<td>Status</td>')
.append('<td>Type</td>');
table.append(header);
var row = jQuery('<tr/>')
.append('<td>' + json.CaseNumber + '</td>')
.append('<td>' + json.Company + '</td>')
.append('<td>' + json.Created + '</td>')
.append('<td>' + json.Description + '</td>')
.append('<td>' + json.Stamp + '</td>')
.append('<td>' + json.Status + '</td>')
.append('<td>' + json.Type + '</td>');
table.append(row);
jQuery('#gridResults').append(table).show();
},
error: function() { alert('An error occurred!'); }
});
</script>
当我运行代码时,我最终得到了这个结果。
使用jQuery的简单AJAX示例。
案例编号公司创建说明邮票状态类型 undefined undefined undefined undefined undefined undefined undefined
我通过Fiddler 2检查,使用POST,以确保我得到了回报。我看到与Fiddler一起回来的结果如下:
{“CaseNumber”:“2”,“公司”:“公司”,“创建”:“9/1/2010 6:31:45 PM”,“描述”:“有些描述在这里。”, “印记”: “/日期(-62135568000000-0800)/”, “状态”: “统计”, “类型”: “类型”}
那看起来好看的JSON?任何人都知道为什么这不解析?或者我错过了其他什么?
故障排除故障:
我试着把行放到一个追加循环中,想着......不确定我在想什么,但无论如何它都无济于事。我所做的就是这个,唯一的区别是它甚至没有给我第一个样本结果中的“未定义”。
jQuery.each(json, function() {
var row = jQuery('<tr/>')
.append('<td>' + this.CaseNumber + '</td>')
.append('<td>' + this.Company + '</td>')
.append('<td>' + this.Created + '</td>')
.append('<td>' + this.Description + '</td>')
.append('<td>' + this.Stamp + '</td>')
.append('<td>' + this.Status + '</td>')
.append('<td>' + this.Type + '</td>');
table.append(row);});
答案 0 :(得分:3)
您需要告诉jQuery将结果解析为JSON,方法是将dataType: 'json'
添加到ajax
参数中。
答案 1 :(得分:1)
你尝试过使用json.d或json.data吗?
答案 2 :(得分:0)
1- do
var j = eval(json);
而不是
.append('<td>' + json.Company + '</td>')
DO
.append('<td>' + j.Company + '</td>')
或使用
jQuery.getScript()
而不是jQuery.Ajax()
我更喜欢第二个,因为它是我使用的那个
答案 3 :(得分:0)
您的退回对象是否有名称?
您正在进行MyObj obj = new MyObj();
然后设置属性然后返回该对象吗?
如果您是,那么您还需要在对象中考虑MyObj因此我认为,未经测试,json.d.MyObj
或仅json.MyObj.propertyName;
答案 4 :(得分:0)
在与代码来回反复之后,我意识到我做错了什么。这是在两个不同的项目中,一个WCF和一个ASP.NET MVC项目,jQuery调用服务。这两个项目都在使用Cassinni,这本身就是真正的问题所在。我在一个端口上安装了WCF项目,在另一个端口上安装了ASP.NET MVC,但两者都是从localhost运行的。这导致了same origin problem。我在一个项目中再次设置整个解决方案(因为我很难,并且不想安装和运行IIS来删除Cassinni作为问题)。我在这里概述了我的整个解决方案tying it all together。
总而言之,上面的代码实际上是正确的,确实有效。然而,端口使其在任何安全兼容的浏览器(换句话说,非IE浏览器)中失败。 IE似乎喜欢忽略相同的原始问题,将其视为浏览器的安全问题。 :/