2012-01-04 9 views
1

経由META説明を取得するのは、私がgeturl.php?url=http://google.comjQueryの

geturl.phpのように(jQueryのでは)簡単なAJAX要求を行うとしましょう。このです:

<?php 
    if($_GET['url']) 
    { 
     $url=$_GET['url']; 
     echo file_get_contents($url); 
    } 
?> 

シンプルな、右?

返された(本当に長い)文字列からjQueryのMETA記述を取得するにはどうすればよいですか?

これまで私がこれまで持っていたことは次のとおりです。はい、知っています、descが間違っています。

$.get("geturl.php?url="+url,function(response) 
{ 
    // Loading <title></title>data 
    var title=(/<title>(.*?)<\/title>/m).exec(response)[1]; 
    var desc = $("meta[name=description]").val(); 
    $("#linkbox").html("<div><b>"+title+"</b><br/>"+url+"<br />Desc: " + desc) 
}); 
+1

説明のみ必要ですか?それで、あなたはPHPでそれを解析することができるので –

+0

私は@Pekkaと一緒です。このサーバー側を実行します。また、:[正規表現、HTML、解析、do not ...あなたはドリルを知っている](http://stackoverflow.com/a/1732454/147845)。 – You

答えて

0

正規表現を使用してHTMLを解析すると、bad practiceとなります。

Annoyingly、jQueryはheadの要素の解析をサポートせず、bodyのみをサポートしています。だからではなく、ストレートJSを使用します。

window.onload = function(){ 
    $.ajax({ 
      type: 'GET', 
      url: '/', 
      dataType: 'html', 
      success: function(data) { 

      //cross platform xml object creation from w3schools 
      try //Internet Explorer 
       { 
       xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
       xmlDoc.async="false"; 
       xmlDoc.loadXML(data); 
       } 
      catch(e) 
       { 
       try // Firefox, Mozilla, Opera, etc. 
       { 
       parser=new DOMParser(); 
       xmlDoc=parser.parseFromString(data,"text/xml"); 
       } 
       catch(e) 
       { 
       alert(e.message); 
       return; 
       } 
       } 

      var metas = xmlDoc.getElementsByTagName("meta"); 
      for (var i = 0; i < metas.length; i++) { 
       if (metas[i].getAttribute("name") == "description") { 
       alert(metas[i].getAttribute("content") || metas[i].getAttribute("edit")); 
       } 
      } 
      } 
    }); 
    } 

臆面もなくはDavid Burrowsからリッピング。ありがとう、デイビッド!

フィドル:霊長類学によって答えは仕事をしながらhttp://jsfiddle.net/wCL8W/8/

+0

なぜ 'jQuery.parseXML'を使わなかったのですか? :P – Esailija

+0

jQuery.parseXMLは文書を整形式のXMLとして解析しようとしますが、これはほとんど常に失敗します:P – benesch

10

、jQueryの程度文は間違っています。 DOMはDOMです。 jQueryは<head>または<body>要素を探しているかどうかは気にしません。以下はうまくいきます:

$('meta[name="description"]').attr('content'); 

メタタグがロードされた後に関数を呼び出すようにしてください。

OPのエラーは、フォーム要素のvalue属性の値を取得するために使用されるval()関数の使用です。しかし、メタタグの値はcontent属性にあるため、機能しません。

+0

$( 'title')。text();作品 –

関連する問題