2016-09-16 8 views
0

サーバーで行われたAPIリクエストからJSONをクライアント側に送信して、その情報をGoogleマップに入れることができます。異なるJavaScript関数でJSONオブジェクトを使用する

リクエストは機能しています。私はJSONオブジェクトを取得していますが、そのオブジェクトをパラメータとして使用するか、変数に保存して「未定義」を返すように印刷しようとすると、そのオブジェクトをコンソールに出力できます。

いずれかが可能ですか?サーバーが要求を実行する場所です:

router.get("/location/:latitude/:longitude", function(req, res) { 
    yelp(req.params.latitude, req.params.longitude); 
    res.redirect("/find"); 
}); 

そして、これが私の関数である:

var request_yelp = function(latitude, longitude) { 
var yelp = new Yelp({ 
    consumer_key: consumer_key, 
    consumer_secret: consumer_secret, 
    token: token, 
    token_secret: token_secret, 
}); 

yelp.search({ 
    term: 'food', 
    ll: latitude + ',' + longitude 
}) 
.then(function (data) { 
    /* Convert data to JSON string */ 
    var str = JSON.stringify(data); 
    /* Parse JSON string to JSON Object */ 
    var obj = JSON.parse(str).businesses; 

    return obj; 
}) .catch(function (err) { 
    console.error(err); 
}); 

サーバーがコードを実行したときに、私はこのような何かをやってみました:

var json = yelp(req.params.latitude, req.params.longitude); 

Iveはグローバル変数を作成し、それを関数の外側に呼び出す前にそれに割り当てることも試みました。関数から 'data'、 'str'、 'obj'変数を返そうとしました。他にもいくつかのことがありますが、私はいつも同じ "未定義"な反応を得ています。

オブジェクトを送信しようとしていた機能は、Googleマップのクライアント側で実行されるcreateMarker関数です。 JSONを取得して使用することができなかったので、それを示すコードはあまりありませんでした。

+0

可能な重複http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchronous-call) – Thernys

答えて

0

は、グローバルオブジェクトを作成してみてくださいし、このようにそれにデータを割り当てる:

var json = {} || new Object(); 
json = yelp(req.params.latitude, req.params.longitude); 
0

使用してJSONレスポンスを読み取るためにjqueryの機能を以下に示します。

 $.each(JSON VAR, function(key, values) { 
      alert('key=' + key + ', val=' + values); 
     }); 
[私は非同期呼び出しからの応答を返すにはどうしますか?](の
関連する問題