Ext.Ajax.request()在成功请求时调用失败回调函数

时间:2011-08-21 20:59:39

标签: extjs cordova sencha-touch

我正在为iOS和Android平台构建PhoneGap - Sencha-touch应用程序。我正在使用Ext.Ajax.request()函数加载本地.js文件。

有趣的事情发生 - 请求成功,但调用'失败'回调。 这是代码:

   Ext.Ajax.request({
       url: 'localfolder/foo.js',
       success : function(xhr){
           // not invoked
       },
       failure : function(response, options){ 
           // response.status == 0
           // wtf, response.responseText contains exactly the contents of the local .js file!
       }
   });

任何人都知道为什么在实际请求成功时会触发'失败'回调? [编辑] 更重要的是,如何触发“成功”回调呢?

2 个答案:

答案 0 :(得分:9)

Ext.Ajax只是检查它创建的底层XHR(XmlHttpRequest)对象的状态代码。但是,它(错误地)假定状态是HTTP状态。正如此Mozilla-provided article所述,当使用file:或ftp:scheme时,状态值为0表示成功。

您可以修改Ext.data.Connection中的onComplete函数(在src / data / Connection.js中)以查看URL的方案,并确定它是否应该使用基于HTTP的状态或“0 =确定“状态以确定成功。

拥有可供客户使用的正文的非成功结果是完全合法的。这就是你的response.responseText仍然正确显示的原因。

答案 1 :(得分:0)

我通常使用这样的回复,也许它会帮助

{
  success:true, // success status
  data: [] // data from process
}