我正在使用他们的OData API为Netflix开发一个应用程序.我已经按照 Stephen Walther’s blog entry关于如何查询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",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,errorThrown){
          alert(textStatus + ":" + errorThrown);
        } 
      });
    } else {
      processResults();
    }
  }

但是,当这个运行时,我不断得到一个parserError.似乎回调函数被调用两次.如果我删除成功:回调行,应用程序工作正常.我的问题是:从ajax调用中离开成功代码行是否有问题?或者为什么有必要包括jsonpCallback和成功线?我主要是出于好奇而问这个问题,因为应用程序似乎在没有回调线的情况下工作正常.

根据您的代码尝试做的事情,我不确定为什么要在$.ajax调用中指定jsonpCallback和成功.我建议您只需指定成功,以便处理您的数据并处理您的分页.让jQuery定义你的jsonp回调的名字.

基本上jsonp回调正在做的是从WCF数据服务接收有效负载,然后将其交给成功处理程序.如果您希望在成功处理程序处理之前对数据进行一些缓存或其他预处理,则看起来您可以使用jsonpCallback.在这种情况下,我不确定为什么你要指定与jsonpCallback和成功处理程序相同的功能. (我简要地查看了斯蒂芬关于你链接的文章,我不是他这样做的原因.)

下面是我在演示和会话中使用的WCF数据服务的jsonp调用示例(并且已经使用了一段时间).我使用JSONPSupportBehaviorAttribute来在我的WCF数据服务中启用JSONP(不确定这是否是您正在使用的).

但在我的示例代码中,我没有指定jsonpCallback名称;我只是指定了jsonp querystring参数(必须是$callback而不是默认的回调),但我让jQuery命名为jsonp回调函数.

我的成功处理程序被调用一次,一切正常.所以我的建议是忘记jsonpCallback,保持你的成功处理程序,我认为事情应该开始更好地工作.

我希望这有帮助.如果您有后续问题,请告诉我.祝你好运!

$.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>");
        });
    }
});

使用带有ajax请求的success / jsonpCallback的更多相关文章

  1. html5录音功能实战示例

    这篇文章主要介绍了html5录音功能实战示例的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. ios – CLGeocoder错误. GEOErrorDomain代码= -3

    有没有关于apple的地理编码请求的文档?谢谢你提前.更新这是我的整个代码请求解决方法在搜索到答案后,它在Apples文档中!

  3. 应用程序关闭时的iOS任务

    我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

  4. ios – 调用异步方法的方法的单元测试

    我想我有这些代码行:我想为该代码编写一个单元测试.对于initializeHomeData和initializeAnythingElse,我可以编写单元测试,如:我的问题是,如何测试reset()?我应该在testReset()中调用它们,如:但我认为这不是适当的实施.解决方法你是对的.要测试重置,您需要调用reset,而不是内部方法.话虽这么说,重置目前的编写方式使其不可测试.您能够如此轻松地测

  5. swift - The Facade Pattern

    Facade(外观)模式为子系统中的各类提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。

  6. swift - The Proxy Pattern

    我在实际工作中vc也仿照过Foundation的delegate:button:内涵业务逻辑,底层实现;每个button是一个类,业务逻辑需要未知的参数和处理之后未知的结果反馈UI:点击button之后界面的改变,UI实现未知的参数和未知的结果反馈,也就是实现这个代理这样以来UI的定制,很灵活很容易,代码思路依然清晰如初。哪个是主体哪个是代理并不重要关键是看定义所说whichisusedwhenanobjectisrequiredtoactasaninterfacetoanotherobjectorres

  7. swift 闭包的使用

    使用:定义:

  8. swift(ios) webview 的优化

    最近一直在做手机H5的东西,网页写多了,测试也测出问题来了,打开十几个网页后,app出现无响应,app的webview界面出现黑屏等等奇怪的问题。我试了几遍,APP内存占用从20M飙升到100M+,到了100M的时候,xcode被断开了,然后问题就一个个冒出来了-_-!搜索了一下,是uiwebview内存泄漏,然后我就兼容了wkwebview。

  9. swift闭包的使用 -- 类似于OC中的Block

    //点击按钮触发该方法funcbuttonClicked(){if(self.callBack!

  10. Swift2到Swift3语法变化不完整总结

    Swift3语法变化Swift3和Swift2对比,更加安全和更加的面向对象了Swift3废弃了旧版本的C类型的GCD写法,而换成了更加面向对象的全新的GCD写法Swift3闭包在方法内部使用限制的关键字修改为了@noescape(默认值)和@escaping如果在方法内部执行了另一个闭包需要使用到方法参数的闭包,需要加上@escaping关键字Swift3闭包的使用避免循环引用Swift3处理S

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部