Datajs OData.read函数没有通过PhoneGap触发

时间:2012-12-21 11:37:11

标签: ios cordova odata datajs

我正在尝试使用PhoneGap和JQuery Mobile将移动Web应用程序打包到iOS应用程序中。该应用程序使用Datajs向另一个站点发出OData请求。我在Cordova.plist中将外部主机设置为'*',并且在通过Web浏览器使用相同文件时请求正常工作。

问题在于,只要它被打包到iOS应用程序中,OData.read()函数就会被完全跳过,就像它们甚至不存在一样。以下是导致问题的代码:

var myURI = baseURL + "GetIndustries";
    console.log("before request");
    OData.read({requestUri: myURI, username: username, password: password}, function (data){
                          console.log("successful request");
               for (var i=0; i<data.results.length; i++) {
            industries[i]=data.results[i];
        }
        }, function(err){
            console.log("error: "+err);
    });
    console.log("after request...");

运行应用程序时,日志输出为:

2012-12-21 11:05:48.104 opportunities[298:907] Multi-tasking -> Device: YES, App: YES
2012-12-21 11:06:04.791 opportunities[298:907] [LOG] before request
2012-12-21 11:06:04.806 opportunities[298:907] [LOG] after request...

对我来说,这表明它完全跳过了OData功能,甚至是错误处理。我正在使用JQueryMobile的datajs-1.1.0和1.2.0版。

任何帮助或指示都将受到广泛赞赏。 感谢。

1 个答案:

答案 0 :(得分:0)

  

对我而言,这表明它完全完全跳过了OData功能

错误。对requestUri的AJAX请求由datajs异步发送。你引用的OData函数是一个回调函数,这意味着它将在稍后调用 - 即:当服务器编写了一个回复并且datajs收到了该回复时。

至于为什么你的回调函数永远不会被调用:请在调用OData.read时检查你的参数。 snippets提供了一些示例。另请参阅detailed documentation for OData.read