2015-04-22 13 views
9

Tôi đã tạo một ứng dụng với Phonegap Cordova và khi tôi thử nghiệm trên Android mọi thứ đều OK, nhưng khi tôi thử nghiệm trên Windows Phone 8.1, nó mang lại cho tôi những điều sau lỗi:Phonegap trên Windows Phone 8.1 với AngularJS không thể truy xuất JSONP từ API

APPHOST9601: Can’t load http://www.example.com/apiv2/process.php/[email protected]&Password=7c4a8d09ca3762af61e59520943dc26494f8941b&callback=angular.callbacks._0 . An app can’t load remote web content in the local context. File: index.html. I am using Angularjs and Onsenui.

EDITED:

mã này là:

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(); 

       } 

      } 
     ); 


     } 

    }; 

    }]); 
+0

Dường như bạn có thể đang sử dụng phương pháp vi phạm các hạn chế bảo mật cho các thiết bị Windows 8.1. Bạn có thể liệt kê mã mà bạn đang thực hiện đang gây ra lỗi này để xem xét không? – Claies

+0

điều này có vẻ giống như vấn đề về CORS –

+0

Chắc chắn là vấn đề về CORS. Bạn cần thêm tiêu đề cho Chia sẻ tài nguyên gốc chéo (CORS). http://en.wikipedia.org/wiki/Cross-origin_resource_sharing – Claies

Trả lời

0

tiên, hãy thử loại bỏ một số mã không cần thiết cho một câu hỏi dễ đọc hơn.

URL của bạn sẽ trông như thế này

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

trong trường hợp đó &_jsonp=JSON_CALLBACK không hoạt động, thay đổi nó cho ?_jsonp=JSON_CALLBACK

ta đã ở cùng nhau trong ứng dụng và ngày hôm qua, tôi đã được đọc một bài báo, vì vậy tôi sửa nó như sau:

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

bây giờ nó đang hoạt động.

+0

Giải pháp này không hiệu quả đối với tôi, tôi đã phải thay đổi lệnh gọi JSONP của mình thành một cuộc gọi GET như '$ http.get (...' – Ben

-1

Tôi gặp sự cố tương tự khi nhắm mục tiêu Windows 8.1.

Trước tiên, tôi đã kiểm tra CORS hỗ trợ phụ trợ của mình. Tôi không tìm cách giữ JSONP trong Windows 8.1, tôi phải thay đổi nó thành một phương thức GET đơn giản. Sau đó, tôi đã xóa 'gọi lại' khỏi URL.

Đề cập đến mã của bạn, nó sẽ giống như thế

$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(); 
    } 
}); 

Nó hoạt động tốt đối với tôi, hy vọng nó có thể giúp người khác.

Các vấn đề liên quan