我可以使用另一双眼睛 - 也许我错过了一些明显的东西。我写了一个WCF服务来从我的sql server数据库返回一些基本数据。它似乎运作得很好。现在我只是试图将这些数据转储到我的网页上:
<script type="text/javascript">
$.ajax({ url: 'http://localhost:35798/restserviceimpl.svc/json/999?callback=?',
dataType: "jsonp",
success: function (data) {
alert(data);
$.each(data, function (i, item) {
$('#gallery').append('<p>' + i + '.'+ item + '</p>');
});
}
});
</script>
使用fiddler,它看起来像正确的格式json数据被返回到我的网页(并且警报显示我看起来jsonlint.com上验证的json数据),但当我尝试迭代它时,我只是得到每个'每个'一个字符,而不是'记录'。我得到800多个迭代,每个迭代只包含一个JSON字符串的字符,而不是json数据的大约17个'记录',每个都有两个字段。
所以我从我的WCF返回一个字符串,看起来像'JSON',或者我上面的jquery脚本有错误吗?
答案 0 :(得分:1)
通常脚本看起来不错。
答案 1 :(得分:0)
好吧,我花了差不多2天试用了一个错误,不确定我是否在WCF端或jQuery端有问题,但这就是我最终得到的并且有效:
<script type="text/javascript">
$(function () {
$.ajax({
url: 'http://localhost:35798/restserviceimpl.svc/json/999',
type: 'GET',
dataType: 'jsonp',
success: function (data) {
var obj = $.parseJSON(data);
$.each(obj, function (i, item) { $('#gallery').append('<p>' + item.Id + '.' + item.Name + '</p>'); });
}
});
});
由于某种原因,我不完全理解,我必须添加$ .parseJSON(数据)行,以便将从我的WCF服务下来的'JSONP'字符串转换为可用的JSON顺序能够迭代它。这很奇怪,因为我从这个应用程序中的其他地方消耗JSONP,并且没有必要这样做,所以我的WCF可能发送稍微不正确的结果,我需要在我的jQuery中进行补偿,但直到我认为如果这是真的,我只会选择有效的方法。