2016-06-15 20 views
0

私は、工場内でXMLHttpRequestを使用してAPIからJSONを取得しようとしていましたが、その内部のログにはうまくいくはずです。Cordova/AngularJSファクトリGET JSON XMLHttpRequest

は、ここで私は私のコントローラ

$scope.test = MyService.getJSON("api url"); // Ends up as undefined 

工場トリガーの内部にconsole.logからサービスを呼び出すここに私の工場コード

.factory('MyService', function(){ 
return { 
    getJSON: function(path){ 
     var xhr = new XMLHttpRequest(); 
     xhr.open("Get", path, true); 
     xhr.onreadystatechange = function(){ 
     if(xhr.readyState === 4){ 
      if(xhr.status === 200){ 
      console.log(JSON.parse(xhr.responseText)); // Displays a correct JSON object 
      return JSON.parse(xhr.responseText); // Returns said object 
      }else{ 
      return xhr; 
      } 
     } 
     }; 
     xhr.send(); 
     } 
    } 
}) 

あると、正しくJSONを表示する方法をこれまで$スコープ。テストは$ scope.testにまったく同じJSONを返してもテストは未定義に終わります

なぜこれが機能しないのか分かっている人は、 kあなたは

答えて

0

が同様にこれを答えるが、問題は、工場出荷時は戻らなかったということでしたそれが$ qを使って約束された後、それは意図したとおりに働き始めました。

0

あなたがやっているのはクロスドメインコールのためです。クロスオリジンコールを有効にするか、通常のhttp-promiseを実行します。 ブラウザとしてInternet Explorerを使用する必要があります。

私はこのことができます願っています:それは半年前に解決されたとしてhttp://enable-cors.org/

  1. https://docs.angularjs.org/api/ng/service/ $ HTTP
+0

クロスオリジンを有効にしました。そうしないと、console.logはapiの場所から取得された有効なJSONオブジェクトを表示できませんでした。 – Kilppari

関連する問題