2012-03-25 114 views
1

我可以使用另一组眼睛 - 也许我错过了一些明显的东西。我写了一个WCF服务来从我的sql服务器数据库返回一些基本数据。它似乎功能正常。现在我只是想将数据转储到我的网页上是这样的:无法访问从WCF正确返回jQuery的jsonp数据

<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> 

使用招,它看起来对我来说,正确的格式化JSON数据被返回到我的网页(以及警告显示我什么样子的JSON数据在jsonlint.com上验证),但是当我尝试迭代它时,我只是为每个'each'而不是'records'获取一个字符。我得到800多次迭代,每次只包含JSON字符串的一个字符,而不是JSON数据的大约17个'记录',每个记录有两个字段。

所以我从我的WCF得到一个字符串,看起来像'JSON,或者是我的jQuery脚本上面有一个错误?

回答

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中进行补偿,但是直到我如果那是真的,我只想去做一些有用的事情。

1
  1. Content-Type标头的值是什么?它应该是“application/json”
  2. 服务返回的数据值是什么?它可能像“[a,b]”而不是[a,b] - 即整个字符串可能用引号或类似的名称。

通常脚本看起来不错。

+0

我同意Evgeny的观点2.通常在jQuery中,alert(data)应该显示[object Object]而不是JSON字符串。 – 2012-03-26 11:27:03

+0

内容类型标题是'application/x-javqascript',我认为*对于jsonp是正确的。 – 2012-03-26 17:28:44

+0

'application/x-javqascript'或application/x-javascript'?无论如何,警报应该显示[Object object]不是一个字符串。我会建议玩的内容类型(应用程序/ JavaScript或应用程序/ JSON - 无所谓,都工作)。 – 2012-03-26 17:44:12