0

我正在尝试使用 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 版。

任何帮助或指示将不胜感激。谢谢。

4

1 回答 1

0

对我来说,这表明它完全跳过了 OData 函数

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

至于为什么你的回调函数永远不会被调用:请在调用时检查你的参数OData.read。这些片段提供了一些示例。另请参阅OData.read 的详细文档

于 2013-01-15T16:22:17.247 回答