我正在使用其OData API为Netflix开发应用程序。我一直关注Stephen
Walther的博客条目
,了解如何查询OData API。在其中,他使用以下代码:
$.ajax({
dataType: "jsonp",
url: query,
jsonpCallback: "callback",
success: callback
});
在我的应用程序中,我需要使用OData的分页链接来检索完整列表。我的代码如下:
// create url and handle ajax call to Netflix
function getTitles() {
query = "http://odata.netflix.com/v2/Catalog" // netflix odata base url
+ "/Genres('Television')" // select Genre
+ "/Titles" // top-level resource
+ "?$select=NetflixApiId,Name,BoxArt,Synopsis,ReleaseYear,AverageRating,Series" // choose fields
+ "&$orderby=Name" // Sort results by name
+ "&$filter=Instant/Available eq true" // filter by instant view
+ " and Type eq 'Season'" // select only seasons
+ "&$expand=Series" // include series data
+ "&$callback=callback" // specify name of callback function
+ "&$format=json"; // json request
$.ajax({
dataType: "jsonp",
url: query,
jsonpCallback: "callback",
success: callback,
error: function(XHR, textStatus, errorThrown){
alert(textStatus + ":" + errorThrown);
}
});
}
// create seasons array and and repeat ajax call until all results are returned
function callback(result) {
seasons = seasons.concat(result["d"]["results"]);
if (typeof result["d"]["__next"] != 'undefined') {
var urlJSONP = result["d"]["__next"] + "&$callback=callback&$format=json";
$.ajax({
dataType: "jsonp",
url: urlJSONP,
jsonpCallback: "callback",
success: callback,
error: function(XHR, textStatus, errorThrown){
alert(textStatus + ":" + errorThrown);
}
});
} else {
processResults();
}
}
但是,当运行时,我会不断收到parserError
。似乎回调函数被调用了两次。如果我删除该success: callback
行,该应用程序将正常运行。我的问题是:离开success
ajax调用的代码行是否有问题?或为什么必须同时包含jsonpCallback
和success
行?我主要是出于好奇而问这个问题,因为在没有两个回调行的情况下,该应用程序似乎都能正常运行。
根据您的代码尝试执行的操作,我不确定为什么要在通话中同时指定jsonpCallback
和。我建议您仅指定为了处理数据和处理分页。让jQuery定义jsonp回调的名称。success``$.ajax``success
实质上,jsonp回调所做的是从WCF数据服务接收有效负载,然后将其传递给成功处理程序。它看起来像您可以使用jsonpCallback
,如果你想要做一些缓存或数据的其他一些预处理,然后才会慢慢由你处理success
的处理程序。我不确定在这种情况下为什么要指定与您的jsonpCallback
和success
处理程序相同的功能。(我简要浏览了您链接到的斯蒂芬的文章,这不是他这样做的原因。)
下面是对WCF数据服务的jsonp调用示例,我在演示和演讲中使用了(并且已经使用了一段时间)。我使用JSONPSupportBehaviorAttribute
来在WCF数据服务中启用JSONP(不确定这是否是您正在使用的)。
但是在示例代码中,我没有指定jsonpCallback
名称;我只是指定jsonp
querystring参数(必须是$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>");
});
}
});
本文向大家介绍Jquery Ajax xmlhttp请求成功问题,包括了Jquery Ajax xmlhttp请求成功问题的使用技巧和注意事项,需要的朋友参考一下 今天遇到了一个极其奇怪的问题,用各种工具检查都能看到服务器端返回了200,数据也是正常的,但是$.ajax 始终进不到success,郁闷啊,在网上找, 常见问题场景: 1.跨域; 2. $.ajax 没设置 dataType,及服务器
问题内容: 我正在使用Ajax发布将表单数据提交到服务器,进行验证,然后根据数据是否有效并可以存储返回一条消息。我的ajax帖子中的成功功能没有运行。这是ajax帖子和成功消息的显示: 标签上没有显示任何消息。我尝试在代码中将successmessage变量设置为一个设置值,并且显示效果很好,所以成功函数一定存在问题,我看不到什么?我也尝试设置错误回调,如下所示: 但是仍然没有消息显示。 问题答案
问题内容: 我正在使用jQuery的功能来提交可以正常工作的表单,但是成功是我遇到问题的地方。这是我的代码: 我遇到的问题是该函数不断说dataCheck不等于 value 。我知道是的,因为删除页面时按预期显示了 value 。另外,我之前使用了几乎相同的代码,这可以正常工作。有人可以给我一些建议吗? 问题答案: 如何自己找到答案: 放置调试代码以查看从服务器获得的信息。 它可能采用您认为不是的
问题内容: 我正在一个网站上,我们从XML文件中获取信息。效果很好,但是现在我需要对内容进行滑动。为此,我将使用jCarousel声明它们可以通过调用回调函数来处理动态加载的内容。 但是,当我成功调用函数时,无法进行初始的ajax加载。我究竟做错了什么? 我做错什么了吗?还是我必须去一个完全不同的地方?:-) 问题答案: 使用hulabula代替hulabula()或将函数直接传递给ajax选项:
问题内容: 注意 :我粘贴的代码不仅仅是ajax调用,以免代码是(导致)问题的一部分。但是,我认为并不是这样,因此您最好将注意力集中在和功能上。 还要注意,由于对此问题有一个评论(带有否决权),说我的代码很难解密,所以我很乐意澄清需要澄清的内容,如果这可以证明是找到问题的关键。 谢谢。 就是这个 我正在尝试抛弃jQuery,因为我唯一使用的是方法,而包括jQuery之类的整个库仅具有一项功能就令I
问题内容: 我正在处理购物车应用程序。用户会将项目添加到他们的“购物车”中,该商品将存储在本地存储中。当用户导航到与将商品添加到购物车的页面不同的页面时,需要使用添加到购物车(本地存储)的商品填充页面。我使用车把为页面构建模板,使用NodeJS / ExpressJS创建路由并为获取/发布请求填充页面,并使用Ajax向客户端和服务器发送请求。 当前,当用户访问视图购物车页面时,我会第一次使用它,但