1

Jquery $.ajax を使用して別のページの html コードを取得するページがあります。外観は次のとおりです。

    <html><head>
    <script language="JavaScript" type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script language="JavaScript" type="text/javascript">
    <!--
$(function(){
        $.ajax({
            url:another_page_url,
            async:false,
            dataType:"text",
            success:function(doc){ 
                //do something with $(doc) 
                //e.g. alert($(doc).find('img').attr('src'));}
        });
});
    //-->
    </script>
    </head>
    <body>
        <pre id="result" style="word-wrap: break-word; white-space: pre-wrap;"></pre>
    </body></html>

another_page_url は、次のような多くの画像を含む Web ページです。

<img src="http://ww3.sinaimg.cn/mw600/50cdeb22jw1e2a35t0w8ag.gif">

問題は、ロードが成功した後に $(doc) ($.parseHTML(doc) に等しい) を呼び出すと、Jquery が ajax get リクエストを開始して、doc に含まれるすべての画像をロードすることです。私の質問は、この自動読み込みを防ぐ方法ですか? これらの実際の画像ではなく、画像の URL 文字列が必要です。

PS dataType="xml" を設定すると、エラーが発生します (読み込みたいページは xml と互換性がなく、変更できないようです)。 doc) 私を同じ状況に導きました。

ご協力いただきありがとうございます。

4

2 に答える 2

4

みんなありがとう。私の質問は次のように解決されました。

$.ajax({
    url:url,
    async:false,
    dataType:"text",
    success:function(doc){ 
        var new_doc = doc.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {return "<img no_load_src=\"" +capture+ "\" />";});
        parse_function(new_doc);
    },
    error:function(jqXHR, textStatus, errorThrown){ alert(textStatus); }
});

これを解決するには、次の 2 つの手順を実行します。

  • $.ajax 呼び出しで dataType="text" を明示的に設定して、jquery が返された HTML ドキュメントを検出および解析しないようにします。
  • 正規表現を使用して、使用する前にすべての img タグの src 属性を置き換えます。
于 2013-03-05T06:37:57.847 に答える
1

そこからhtmlデータをロードするように要求するときはいつでも、それは常にhtmlとして扱われます。したがって、htmlを文字列として使用する場合は、 <&ltに、>&gtに置き換える必要があります。

以下を参照してください。

success:function(doc){ 

    // create dynamic temporary div
    var div = $("<div />" , { id : 'temp-container' });

    // appned reposne html into div 
    $(div).html(doc);


    var img_url = $(div).find('img').attr('src'); 

            // check firebug console
    console.log(img_url);   


}

任意の属性を見つけることができます。本体に上部を追加する必要はありません。
それがあなたのためにうまくいくことを願っています。幸運を

于 2013-03-01T04:42:37.767 に答える