For my Phonegap App I'm trying to load a JSON file using angulars $http.
I got this service:
cApp.factory('language', function ($http) {
return {
getLanguageData: function () {
return $http.get('../../lang/' + lang.substr(0,2) + '.json');
}
}
});
Which I use in this controller:
cApp.controller('initController', function ($scope, language) {
language.getLanguageData().success(function (data) {
$scope.language = data;
}).catch(function (e) {
alert("error" + e);
});
});
This works fine in my browser, but not in Phonegap Developerapp on Android. The controller does not write the language variable, and does not alert anything (not even "error").
What i tried:
With a .catch().then().catch() chain it returned me data which was null in the last .catch().
I tought about if it's a cross origin problem, but my phonegap whitelist allows all domains (<access origin="*" />).
The files should be in the same domain anyways, since my folder structure looks like this:
.myapp
├── www
| ├── js
| | ├── controller
| | | └── initController.js
| | └── service
| | └── language.js
| └── lang
| ├── en.json
| └── de.json
└── config.xml
What am I doing wrong, missing?
UPDATE: Partial solution found:
It works if i execute the get() using the whole path:
return $http.get('file:///data/data/com.adobe.phonegap.app/files/phonegapdevapp/www/json/lang/' + lang.substr(0,2) + '.json');
That's not a proper solution since it won't work on iOS (different path). I don't get why I can't use ../../lang/.
..but the phonegap app goes up too far. Probably you should be using'/lang/'as the path.