我正在使用离子框架开发iOS应用程序,当我尝试使用3G网络调用Web服务时遇到一个问题。
这是我在UserService中的服务:
function getUserStat(user_id){
var request = $http({ method: "get",
url: "http://www.example.com/user.php",
params: {
action: "stat",
user_id:user_id
},
data: {
}
});
return(request.then(handleSuccess, handleError));
}
function handleError( response ) {
// The API response from the server should be returned in a
// nomralized format. However, if the request was not handled by the
// server (or what not handles properly - ex. server error), then we
// may have to normalize it on our end, as best we can.
if (!angular.isObject( response.data ) || !response.data.message) {
return( $q.reject("An unknown error occurred.") );
}
// Otherwise, use expected error message.
return( $q.reject( response.data.message ) );
}
// I transform the successful response, unwrapping the application data
// from the API response payload.
function handleSuccess( response ) {
return( response.data );
}
getUserStat()函数将返回json。
这是我的控制器
UserService.getUserStat($scope.user_id).then(function(data){
alert("Result: " + JSON.stringify(data));
});
在我的控制中我只是展示了json。
我将此代码构建到我的iPhone并通过WIFI网络进行测试,一切正常。如果我更新服务器端,控制器中的UserService.getUserStat将显示更新。但问题是当我在3G网络上测试时,iPhone总是显示从服务器返回的旧json(即使我更改了服务器端数据)。
解决这个问题的任何想法?
谢谢
答案 0 :(得分:0)
当我尝试将相机照片上传到我的数据服务器时,我遇到了类似的问题。当我在我的本地WIFI上测试应用程序时,它工作得很好但是当我在外面测试它时我注意到它无法上传文件。最终问题是,由于互联网外部速度慢得多,因此应用程序移动到另一个视图而未完成上传操作。
因此,例如,如果您的控制器看起来像这样:
.controller('Ctrl1', function(webService, $scope, $state) {
UserService.getUserStat($scope.user_id).then(function(data){
alert("Result: " + JSON.stringify(data));
});
$state.go('app.posts');
});
它应该是这样的:
.controller('Ctrl1', function(webService, $scope, $state) {
UserService.getUserStat($scope.user_id).then(function(data){
alert("Result: " + JSON.stringify(data));
})
.finally(function() {
$state.go('app.posts');
});
});