2012-02-19 7 views
0

ユーザーが入力ボックスにURLを入力して[submit]をクリックすると、スクリプトによってWebCiteページが返されるようにしようとしています。 (WebCiteはURLキャッシングサービスです。例えば、私がwww.google.comを "アーカイブ"する場合、アーカイブページはwww.webcitation.org/65YgIgei6です).WebCiteには、キャッシュするURLを指定すると、電子メール、パラメータ&returnxml=trueを入力すると、xmlファイルが返されます。 (例えば、http://www.webcitation.org/archive?url=http://www.google.com&[email protected]&returnxml=true<webcite_url>タグの間のテキストはアーカイブのページでxmlファイルにつながる。)javascriptを使用してXMLファイルを検索する

は、だから私は「</webcite_url>を「<webcite_url>」用のXMLファイルを検索しますいくつかのJavscript(またはjqueryの)を希望しますそれらのタグの中にurlを返します。 http://jsfiddle.net/gxHWk/が基本的な考えです。

btw、私はstackoverflow.com/questions/6648454/search-and-output-data-from-an-xml-file-using-javascriptを読んでいますが、私はそこにコードを適合させる方法を理解できません私の状況。

(* "のhttp://" 削除理由は、スパムフィルタのいくつかのリンクから)

ありがとう!

+0

サーバー側のプロキシが必要です。 – SLaks

答えて

0

これがjQueryの機能です。 jsFiddle

$(XMLstring).find('webcite_url').text(); 
+0

うわー、それは素晴らしいです!しかし、ひとつは、XMLファイルのテキストをコピーして変数として設定しただけです。私の質問は:どのように私はそれを自動的に行うコードを持つことができますか?言い換えれば、コードにhttp://www.webcitation.org/archive?url=http://www.google.com&[email protected]&returnxml=trueにアクセスし、その内容に変数を設定するにはどうすればよいですか。そのファイル? –

+0

ああ、私は別のドメイン(webcite.org)に問い合わせているので、私はjquery.get()ajaxメソッドをhttp://think2loud.com/224-reading-xml-with-jquery/に示すように使用することはできません –

+0

あなたの質問は "どのようにxmlを解析する"ではなく "どのようにクロスドメインajaxを実行する"でした。そのサービスはJSONを提供しないので、簡単な答えは "できません"です。長い答えは、リクエストを行うためにサーバー上にプロキシをセットアップする必要があるということです。参照:http://jquery-howto.blogspot.com/2009/04/cross-domain-ajax-querying-with-jquery.html – Sinetheta

0

jQueryのない溶液:iframeの

    1. 負荷XMLはDOM
     
    var iframe = document.createElement("iframe"); 
    iframe.src = "http://www.webcitation.org/archive?url=http://[email protected]&returnxml=true"; 
    document.body.appendChild(iframe); 
    iframe.onload = function() { 
        var url = this.contentDocument.getElementsByTagName("webcite_url")[0].firstChild.nodeValue; 
    
        // do whatever you want with the url over here 
    } 
    

    を通過しかし、注意してください。これは単に一般的なポインタです。ここにはブラウザの非互換性があります。

  • +0

    私はこれを試しましたが、エラーが発生しました(「エラー:プロパティがXMLDocument.getElementsByTagNameプロパティを取得するためにの権限が拒否されました」)。 http://jsfiddle.net/Ku9Tc/5/を参照してください。 –

    +0

    元のポリシーは同じです。他のドメインのコンテンツにアクセスすることはできません。したがって、サーバー上のリクエストをリダイレクトするプロキシを使用するか、http://easyxdm.net/wp/ – umjasnik

    0

    jQueryは、xmlファイルを解析するために構築されています。あなたの問題は、別のドメインからデータを解析する方法です。 JSONPがあなたの答えです。 リクエストの末尾に?callback=?"を追加し、dataオプションにjsonpと入力します。

    $.ajax({ 
        url: "http://www.webcitation.org/archive?url=http://www.google.com&[email protected]&returnxml=true?callback=?", 
        dataType:'jsonp', 
        success: function (XMLstring) { 
        $(XMLstring).find('webcite_url').text(); 
        } 
    }); 
    
    +0

    のようなものを試してみてください。これは私が探しているものに近いですね。しかし、私はこれを試してみました(http://jsfiddle.net/A2S2S/1/)、エラーが出ました: '終端されていない正規表現リテラル...'これは小さな問題のように見えますが、私自身ですそれを修正する方法がわからない –

    +0

    こんにちは@AnthonyNewman。私はそれが "XMLを解析する"とは異なる問題かもしれないと思いますので、新しい質問をすることをお勧めします。 :) – steveyang

    +0

    ありがとう、私はそれをやるよ!私はあなたが私を正しい軌道に乗せたと思う。 –

    関連する問題