2013-10-14 10 views
6

私はjavascriptの、angularJSとjQueryの初心者だけど、私はちょうど私がこのようなWebサーバからJSONを取得するためにjQueryのを使用angularJSアプリプログラミングを開始しました:angleJSにgetJSONと等しいメソッドがありますか? [初心者の警告]

var obj = $.getJSON("http://something.com/lol?query="+ $scope.searchString, function() { 
      $scope.items = obj.responseJSON.entries;      
     } 

をありangleJSの$ .getJSONに等しいメソッド私はJQueryライブラリをインポートする必要はありません。

ありがとうございます、初心者です。

これは、これまでのところ私のソリューションです:

function InstantSearchController($scope, $http){ 
$scope.search = function() { 
    $http.jsonp("http://something.com/lol?query="+ $scope.searchString + "?json_callback=JSON_CALLBACK").success(
         function(data, status) { 
          console.log(data); 
         } 
       ); 
} 

が、私はエラーMSGを取得しています:

Uncaught SyntaxError: Unexpected token :

これはなぜでしょうか?私は何を間違えているのですか? }

答えて

8

私は最終的にそれを修正するために管理され、私はこのようにそれをしなかった私の質問に答える人から得た助けをするので:これは将来的には同じ問題を抱えている人を助け

app.controller('myController', function($scope, $http){ 
    $scope.items = []; 
    $scope.search = function() {   
      $http({method: 'JSONP', url: "http://something.com/lol?callback=JSON_CALLBACK&query="+ $scope.searchString}). 
       success(function(data, status) { 
       $scope.items = data.entries; 
       }). 
       error(function(data, status) { 
       console.log(data || "Request failed"); 
      });  
    }; 

希望:D

2

$httpを使用すると、AJAXリクエストをAngularで送信できます。

1
function ListProdcutsCtrl($scope, $http) { 
    var request = {'searchString' : 'apple'}; 
    $http.get('/api/products', request).success(function(response) { 
     $scope.products_table_data = response.products; 
    }); 
+1

var request = {'searchString' = 'apple'}; ?それはvar request = {'searchString': 'apple'}にする必要があります。 – Whisher

+0

申し訳ありません。実際にコードを実行していない... –

+0

私は完全なnoooobだ異なるセットアップaaaandのため、これを理解していない...それは私に同じ名前のソリューションを与えることは可能です私は私の例? xD – Erex

1

とJSONPリクエストを使用することができ、あなたはmore hereを見つけることができます。例えば :

$http({method: 'JSONP', url: 'http://domain.com/page?json_callback=JSON_CALLBACK'}).success(
    function(data, status) { 
     // your stuff. 
    } 
); 

あるいは短い:

$http.jsonp('http://domain.com/page?json_callback=JSON_CALLBACK').success(
    function(data, status) { 
     // your stuff. 
    } 
); 

JSONP(JSONパディング)は、別のドメインからJSONデータを取得することができます。しかし、あなたが得るデータはプレーンなJSONされるべきではなく、むしろJavascriptがこのようなファイル:あなたが必要とするあなたのJSONデータが同じドメインから来る場合

JSON_CALLBACK([ 
    {"name": "apple", "color": "red"}, 
    {"name": "banana", "color": "yellow"} 
]); 

、あなたはJSONPを必要としません。

+0

ありがとう!しかし、それはJSONPではなくJSONですか?違いはなんですか?私はこれをやっているときに "Uncaught SyntaxError:Unexpected token:"エラーが出てきます、それはおそらくなぜですか? – Erex

+0

JSONPを使用すると、さまざまなブラウザが、通常はブラウザによって禁止されている別のドメインからJSONデータを要求できます。私のサンプルURLでは明示的ではありませんが、URLにパラメータ "callback = JSON_CALLBACK"を追加する必要があります(AngularJSドキュメントの詳細)。 –

+0

私はここに自分のコードを貼り付けることを試みたが、デイデントはそれを働かせるので、私は質問を延長した。どんなアイデアが間違っていますか? huuuuge noobのように今感じ、私たちのためにそれをされている! – Erex

0

JSONPは、AJAX URL呼び出しのクロスドメイン制限を克服するために使用されます。 AngularJS(V1.5)で

、あなたがクロスドメインリクエストを送信するには、このコードを使用することができます:

$http.jsonp(baseurl+'?token=assume_jwt_token'+encoding+type + "&callback=JSON_CALLBACK") 

をAngularJS JSONPリクエストの構文は次のとおりです。urlは「文字列が

$http.jsonp(url, [config]); 

ですリクエストの宛先を指定する相対URLまたは絶対URLを表す型。コールバックの名前は文字列JSON_CALLBACKでなければならず、[config]はオプションの設定オブジェクトです。

関連する問題