带有 AngularJS 的 Windows Phone 8.1 上的 Phonegap 无法从我的 API 中检索 JSONP



我用Phonegap Cordova制作了一个应用程序,当我在Android上测试它时,一切都很好,但是当我在Windows Phone 8.1上测试它时,它给了我以下错误:

APPHOST9601:无法加载 http://www.example.com/apiv2/process.php/Login2?Email=xxxx@xxxx.com&Password=7c4a8d09ca3762af61e59520943dc26494f8941b&callback=angular.callbacks._0。应用无法在本地上下文中加载远程 Web 内容。文件:索引.html。我正在使用Angularjs和Onsenui。

编辑:

代码为:

var apiprincipal = 'http://www.example.com/apiv2/process.php/';
 // Log In Controller
  app.controller('loginController', [ '$http', '$scope', '$rootScope', function($http, $scope, $rootScope){
    $scope.email = '';
    $scope.password = '';
    $scope.loginN = function(){
      if($scope.email==='' && $scope.password===''){         
        ons.notification.alert({message: "Vou00E7u00EA deveru00E1 preencer os dois campos usuu00E1rio e senha"});
      } else {
        modal.show();
          $http.jsonp(apiprincipal+'Login2?Email='+$scope.email+'&Password='+CryptoJS.SHA1($scope.password)+'&callback=JSON_CALLBACK').success(
            function(response){
              if(response.status=='ok'){
                 console.log('WORKING')
              } else{
                modal.hide();
              }
            }
          );

      }
    };
  }]);

首先,尝试删除一些不必要的代码以获得更具可读性的问题。

您的网址应如下所示

$http.jsonp(apiprincipal+'Login2?Email='+$scope.email+'&Password='+CryptoJS.SHA1($scope.password)+'&_jsonp=JSON_CALLBACK') 

如果&_jsonp=JSON_CALLBACK不起作用,请将其更改为?_jsonp=JSON_CALLBACK

在我的应用程序中也是一样的,昨天我正在阅读一篇文章,所以我像这样修复它:

http://amyurl.com/wp-json/posts?_jsonp=JSON_CALLBACK

现在它正在工作。

我在

面向Windows 8.1时遇到了同样的问题。

首先,我检查了后端支持的 CORS。我没有找到在Windows 8.1中保留JSONP的方法,我不得不将其更改为简单的GET方法。然后我从 URL 中删除了"回调"。

参考您的代码,它应该看起来像这样

$http.get(apiprincipal+'Login2?Email='+$scope.email+'&Password='+CryptoJS.SHA1($scope.password)).success(function(response) {
    if(response.status=='ok'){
        console.log('WORKING');
    } else{
        modal.hide();
    }
});

对我来说效果很好,希望它可以帮助其他人。

最新更新