Javascript 使用AngularJS的Windows Phone 8.1上的Phonegap可以';t从我的API中检索JSONP

Javascript 使用AngularJS的Windows Phone 8.1上的Phonegap可以';t从我的API中检索JSONP,javascript,angularjs,cordova,onsen-ui,Javascript,Angularjs,Cordova,Onsen Ui,我用Phonegap Cordova制作了一个应用程序,在Android上测试时一切正常,但在Windows Phone 8.1上测试时出现以下错误: APPHOST9601:无法加载。应用程序无法在本地上下文中加载远程web内容。文件:index.html。我正在使用Angularjs和Onsenui 编辑: 代码是: var apiprincipal = 'http://www.example.com/apiv2/process.php/'; // Log In Controller

我用Phonegap Cordova制作了一个应用程序,在Android上测试时一切正常,但在Windows Phone 8.1上测试时出现以下错误:

APPHOST9601:无法加载。应用程序无法在本地上下文中加载远程web内容。文件:index.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: "Vo\u00E7\u00EA dever\u00E1 preencer os dois campos usu\u00E1rio 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();

              }

            }
          );


      }

    };

  }]);

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

您的URL应该如下所示

$http.jsonp(apiprincipal+'Login2?Email='+$scope.email+'&Password='+CryptoJS.SHA1($scope.password)+'&_jsonp=JSON_CALLBACK') 
如果
&_jsonp=JSON\u回调
不起作用,请将其更改为
?_jsonp=JSON\u回调

我在我的应用程序中也使用了相同的功能,昨天我在读一篇文章,所以我将其修改为:

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

现在它正在工作

我在瞄准Windows 8.1时也遇到了同样的问题

首先,我检查了后端支持的CORS。我没有找到在Windows8.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();
    }
});

这对我来说效果很好,希望能帮助其他人。

看来您使用的方法可能违反了Windows 8.1设备的安全限制。你能列出你正在执行的导致这个错误的代码吗?这看起来像是一个CORS问题,确切地说是一个CORS问题。您需要为跨源资源共享(CORS)添加头。但我的配置应用程序文件中有,有什么问题吗?如果我使用adroid运行该应用程序,该应用程序将非常有效,但如果我构建到windows phone,则会出现此错误。您尚未列出显示此错误的代码。此解决方案不适用于我,我必须将我的JSONP调用更改为GET调用,如
$http.GET(…