2012-02-08 7 views
2

私は、jQueryオートコンプリートとYahoo FinanceとZend Frameworkを連携させようとしています。jQueryオートコンプリートとヤフーファイナンス

私が望むのは、Yahoo APIを通じてティッカーシンボルを自動補完できるフォームフィールドを作成することです。

私はすでにこれを含まZend_From要素作成しました:私は私の問題の一部を解決this postを見つけましたが、私はvar YAHOO={Finance:{SymbolSuggest:{}}};を使用して汚いトリックで、正しい方法ではないと思います

$this->setJQueryParam('source', new Zend_Json_Expr('function(request, response) { 
      $.ajax({ 
       type: "GET", 
       dataType: "jsonp", 
       jsonp: "callback", 
       jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback", 
       data: { 
        query: request.term 
       }, 
       cache: true, 
       url: "http://autoc.finance.yahoo.com/autoc"; 
       } 
      }); 
     }')); 
    $this->getView()->jQuery()->addJavascript('var YAHOO={Finance:{SymbolSuggest:{}}};'); 
    $this->getView()->jQuery()->addOnLoad('YAHOO.Finance.SymbolSuggest.ssCallback = function (data) { 
              console.log(JSON.stringify(data)); }'); 

をする。 [:

{ "のResultSet":{ "クエリ": "グー"、 "結果" 私は私のフィールドにGOOを入力した場合

さて、その後、放火犯コンソールは私にこのような何かが表示されます{"シンボル": "GOOG"、 "名前": "Google Inc"、 "exch": "NMS"、 "タイプ": "S"、 "exchDisp": "NASDAQ"、 "typeDisp" "exch": "NYQ"、 "type": "S"、 "exchDisp": "NYSE"、 "typeDisp" ":" Equity "} ...

これは素晴らしいですが、私はこれらのデータをこのコールバック関数からオートコンプリートに戻す方法はわかりません。

+0

すぐにyahoo finance lookup apiを試してみてください:http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=GOO&callback=YAHOO.Finance.SymbolSuggest.ssCallback – Liyali

+0

I autoc.finance.yahoo.comによって提供されるこのオートコンプリート機能が実際のAPIではないという注意を追加します。これはウェブサイトの内部Yahoo機能です。あなたは確かにそれを使って遊んでそれを使ってアプリケーションを作ることができますが、それを使って何かを実際に構築しようとはしません。 – BrianC

+0

ご意見ありがとうございます、私は実際に仮想ポートフォリオマネージャを開発しています。 – Liyali

答えて

3

私は最終的に解決策を見つけましたが、私はまだYAHOO名前空間を使用しています。

私は最初に最後の行(addOnLoad)を削除し、Ajaxリクエストの直後にコンテンツを移動しました。私はまだオートコンプリート機能を使用しており、結果をオートコンプリートに戻すことができます。

$this->setJQueryParam('source', new Zend_Json_Expr('function(request, response) { 
     $.ajax({ 
      type: "GET", 
      dataType: "jsonp", 
      jsonp: "callback", 
      jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback", 
      data: { 
       query: request.term 
      }, 
      cache: true, 
      url: "http://autoc.finance.yahoo.com/autoc"; 
      } 
     }); 
     YAHOO.Finance.SymbolSuggest.ssCallback = function (data) { 
      console.log(data.ResultSet.Result); 
      response($.map(data.ResultSet.Result, function(item) { 
       return { 
        label: item.symbol, 
        value: item.name 
       } 
      })) 
     } 
    }')); 
$this->getView()->jQuery()->addJavascript('var YAHOO={Finance:{SymbolSuggest:{}}};'); 

はそれに役立つことを願って:

はここで最終的なコードです!

4

Liyali、それを理解してコードを投稿してくれてありがとう。 jqueryのオートコンプリートのコンテキストでjsを提供したかっただけです。

$("#txtTicker").autocomplete({ 
source: function (request, response) { 
    $.ajax({ 
     type: "GET", 
     dataType: "jsonp", 
     jsonp: "callback", 
     jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback", 
     data: { 
      query: request.term 
     }, 
     cache: true, 
     url: "http://autoc.finance.yahoo.com/autoc" 
    }); 

    YAHOO.Finance.SymbolSuggest.ssCallback = function (data) { 
     response($.map(data.ResultSet.Result, function (item) { 
      return { 
       label: item.name, 
       value: item.symbol 
      } 
     })); 
    } 
}, 
minLength: 1, 
select: function (event, ui) { 
    $("#txtTicker").val(ui.item.name); 
}, 
open: function() { 
    $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
}, 
close: function() { 
    $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
} 

});

関連する問題