0

URL を次のように呼び出して得た応答を解析する際に問題に直面しています。

        $scope.getSuggestions = function (val) {
        return $http.jsonp('https://Suggestions-api.net/v1/suggest?query=' + val + '&callback=JSON_CALLBACK').success(function (data) {
            return data.value;
        });
    };

    $scope.JSON_CALLBACK = function (data) {
        return data.value;
    };

編集: UI:

<input type="text" id="search" ng-model="searchText" typeahead="JumboID for JumboID in getSuggestions($viewValue)" />

次のような形式で取得している応答:

{"@odata.context":"https://Suggestions-api.net/indexes('jumboindex')/$metadata#docs(JumboID)",
"value":
[{"@search.text":"90911491","JumboID":"4454b90146a98733529b38942d028acb:f011f34214422e4903f4590819f41c21"},
{"@search.text":"9094993","JumboID":"07c927eae265db736a20650e77d2e945:f011f34214422e4903f4590819f41c21"},
{"@search.text":"90910444","JumboID":"0155444a12dfadff2451e06be40a98d2:f011f34214422e4903f4590819f41c21"},
{"@search.text":"9090 Whiskey Bottom Road Laurel Maryland 20723","JumboID":"34b239bd2dba98df6f5ae26a1f66c2fb:80880b9b1d7261f24c4e1c341853ec4e"},   
{"@search.text":"9090 Alta Drive Las Vegas Nevada 89145","JumboID":"d0746b298cfca4c5df3699823e32f6c3:80880b9b1d7261f24c4e1c341853ec4e"}]}

次のようにコンソールにエラーをスローします。

Uncaught SyntaxError: Unexpected token :

ここで私を助けてください。

4

2 に答える 2

0

jsonp の angularjs ドキュメントには、次のように記載されていることに注意してください。

コールバックの名前は文字列 JSON_CALLBACK にする必要があります。

それを機能させるには、コールバック名をサーバーに渡し、バックエンドでこの関数呼び出しに json をラップする必要があります (詳細については、この SOを参照してください。アイデアが得られます)。

基本的にあなたのURLは次のようになります:

https://Suggestions-api.net/v1/suggest?query=ABCD&callback=JSON_CALLBACK

そして、サーバーの応答は次のようになります。

JSON_CALLBACK(
    {"@odata.context":"https://Suggestions-api.net/indexes('jumboindex')/$metadata#docs(JumboID)",
    "value": [
    {"@search.text":"90911491","JumboID":"4454b90146a98733529b38942d028acb:f011f34214422e4903f4590819f41c21"},
    {"@search.text":"9094993","JumboID":"07c927eae265db736a20650e77d2e945:f011f34214422e4903f4590819f41c21"},
    {"@search.text":"90910444","JumboID":"0155444a12dfadff2451e06be40a98d2:f011f34214422e4903f4590819f41c21"},
    {"@search.text":"9090 Whiskey Bottom Road Laurel Maryland 20723","JumboID":"34b239bd2dba98df6f5ae26a1f66c2fb:80880b9b1d7261f24c4e1c341853ec4e"},   
    {"@search.text":"9090 Alta Drive Las Vegas Nevada 89145","JumboID":"d0746b298cfca4c5df3699823e32f6c3:80880b9b1d7261f24c4e1c341853ec4e"}
    ]}
)
于 2014-12-30T11:47:38.000 に答える
0

URLリンクを引用符で囲みます

于 2014-12-30T10:56:09.413 に答える