2009-05-22 4 views
2

Wolfram Alphaでクエリを実行する単純なUbiquityコマンドを書き、その結果をユビキティプレビューオブジェクトに表示しようとしています。jQuery + Ubiquity:URLからドキュメントオブジェクトを返します

私は、プレビューオブジェクトのinnerHTMLを設定する必要があります。ヴォルフラムは、ページ上のすべてのHTMLを生成するために、5〜10秒かかります

    1. :私は2つの問題/質問があり

      //... 
      jQuery.get('http://www.wolframalpha.com/input/?i=' + input.text, 
          null, 
          function(page) { 
           previewBlock.innerHTML = page; 
          } 
      ); 
      

      :私は現在、唯一の開始であるHTMLを取得するためにこれをやっています、get()コマンドは不完全なHTMLを返します
      ページが完全に読み込まれるまでどのくらい待つことができますか?

    2. 結果はヴォルフラムページにid="results"を持って、私はちょうどこのような何かを実行して結果を取得したいのですが:
      previewBlock.innerHTML = page.getElementById('results').innerHTML
      どのようにこれは私が使用しているURLに行うことができますか?

    別のオプションは、ソースとしてヴォルフラムURLを使用して新しい要素を作成し、previewBlockにそれを追加するかもしれない - 私もそれを行うするかどうかはわかりません。任意の提案をいただければ幸いです。

    UPDATEここ
    は、私が使用しているUbiquityのスクリプトです - それは、ループ内のソースHTMLを出力してから画像を取得します。注意:CmdUtils.previewGet(pblock, opt)通話jQuery.get(opt)

    CmdUtils.CreateCommand({ 
        name: "wolfram", 
        takes: {"input": noun_arb_text}, 
        icon: "http://www.wolframalpha.com/favicon.ico", 
        homepage: "http://www.wolframalpha.com", 
        author: {name:"Jason Coon"}, 
        description: "Searches Wolfram Alpha and loads results in to Preview pane.", 
    
        preview: function(pblock, input) { 
        CmdUtils.previewGet(pblock, 
         'http://www.wolframalpha.com/input/?i=' + input.text, 
         null, 
         function(data){ 
         var resultStart = data.indexOf("results",0); 
         var beginPos = data.indexOf("<img src", resultStart); 
         var endPos = 0; 
         var html = "" 
         while(beginPos != -1){ 
          endPos = data.indexOf(">", beginPos); 
          html = html + "<br><br>" + data.substring(beginPos, endPos); 
          beginPos = data.indexOf("<img src", endPos); 
         } 
         pblock.innerHTML = html; 
         } 
        ); 
        } 
    }) 
    
  • +0

    まず「制限されたURI拒否」エラーをどのように過ぎていますか? –

    +0

    ユビキタスはそれを世話しているようで、データを取得できます。 –

    +0

    ユビキタスコールを含むコードを投稿してください。 –

    答えて

    2

    を私はこれがUbiquityのプレビューを使用していても可能であるとは思いません。問題は、リクエストをWolframに送信すると、ページのロードが非常に迅速に完了しますが、既に知っているように非同期的に追加の情報を取得し続けることです。

    これは、代わりにUbiquityのプレビューのブラウザウィンドウを介して行われていた場合、あなたは実際に非表示のiframeにページをロードすると、結果のdivを更新する前に内容を確認できます。ただし、このオプションは現在のバージョンのユビキタスでは使用できません。

    はここにあなたのコマンドを実行し、テキスト「USA GDP」を渡すのスクリーンショットです。 2つのdivは表示情報を取得し、2つはページのロードが終了するとすぐに追加のデータを非同期的に取得します。 W-Webフロントエンドへの応答を解析しようとするよりも、アルファAPI |
    alt text http://exterbase.com/wolfram-result.png

    1

    私はあなたのアイデアがなんとかだと思うが、私はあなたがヴォルフラムにAJAX呼び出しでより多くの成功を持っていると思います。 WolframAlpha APIのドキュメントについては、こちらをご覧ください:www.wolframalpha.com/WolframAlphaAPI.pdf

    APIとのやりとりのアプローチを変更すると、問題が解決するはずです。現在のアプローチを継続したい場合は、組み込みのWikipediaコマンドのコードを調べて、検索結果をどのように解析したかを確認してから、プレビュー用の記事概要を非同期に取得することができます。

    関連する問題