根据您的代码尝试执行的操作,我不确定为什么要在通话中同时指定
jsonpCallback和。我建议您仅指定为了处理数据和处理分页。让jQuery定义jsonp回调的名称。
success``$.ajax``success
实质上,jsonp回调所做的是从WCF数据服务接收有效负载,然后将其传递给成功处理程序。它看起来像您可以使用
jsonpCallback,如果你想要做一些缓存或数据的其他一些预处理,然后才会慢慢由你处理
success的处理程序。我不确定在这种情况下为什么要指定与您的
jsonpCallback和
success处理程序相同的功能。(我简要浏览了您链接到的斯蒂芬的文章,这不是他这样做的原因。)
下面是对WCF数据服务的jsonp调用示例,我在演示和演讲中使用了(并且已经使用了一段时间)。我使用
JSONPSupportBehaviorAttribute来在WCF数据服务中启用JSONP(不确定这是否是您正在使用的)。
但是在示例代码中,我没有指定
jsonpCallback名称;我只是指定
jsonpquerystring参数(必须是
$callback而不是默认值
callback),但是我让jQuery命名为jsonp回调函数。
我的
success处理程序被调用一次,一切正常。所以我的建议是忘记
jsonpCallback,让您的
success处理程序保持在原位,我认为事情应该会开始更好地工作。
我希望这有帮助。如果您有其他疑问,请告诉我。祝好运!
$.ajax({ url: 'http://server:25812/Services/AgileWays.baseball.Service.svc/Teams?$format=json&$filter=yearID eq 1882', type: 'GET', dataType: 'jsonp', cache: false, jsonp: '$callback', error: function (x, t, r) { alert(x.response.message); }, success: function (data) { $.each(data.d.results, function (i, val) { $("#results").append("<div>" + val.name + "</div>"); }); }});


