Javascript Çapraz Etki RSS Feed Ayrıştırma ile Proxy Sorunları

1 Cevap php

Bu vekil komut dosyası üzerinden bir rss feed kapmak ve sonra benim biçembente bir link ile birlikte yemden son 5 rss öğeleri dışarı tükürür benim Javascript fonksiyonu:

    function getWidget (feed,limit) {  if (window.XMLHttpRequest) {
        xhttp=new XMLHttpRequest()
    } else {
        xhttp=new ActiveXObject("Microsoft.XMLHTTP")
    }
    xhttp.open("GET","http://MYSITE/proxy.php?url="+feed,false);
    xhttp.send("");
    xmlDoc=xhttp.responseXML;
    var x = 1;
    var div = document.getElementById("div");
    div.innerHTML = '<link type="text/css" href="http://MYSITE/css/widget.css" rel="stylesheet" /><div id="rss-title"></div></h3><div id="items"></div><br /><br /><a href="http://MYSITE">Powered by MYSITE</a>';
    document.body.appendChild(div);
    content=xmlDoc.getElementsByTagName("title");
    thelink=xmlDoc.getElementsByTagName("link");
    document.getElementByTagName("rss-title").innerHTML += content[0].childNodes[0].nodeValue;
    for (x=1;x<=limit;srx++) {
        y=x;
        y--;
        var theitem = '<div class="item"><a href="'+thelink[y].childNodes[0].nodeValue+'">'+content[x].childNodes[0].nodeValue+'</a></div>';
        document.getElementById("items").innerHTML += theitem;
    }  }

İşte proxy.php gelen kodu:

    $session = curl_init($_GET['url']);                    // Open the Curl session
curl_setopt($session, CURLOPT_HEADER, false);          // Don't return HTTP headers
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);   // Do return the contents of the call
$xml = curl_exec($session);                            // Make the call
header("Content-Type: text/xml");                  // Set the content type appropriately
echo $xml;        // Spit out the xml
curl_close($session); // And close the session

Şimdi benim sitesi hiçbir yükleri değil herhangi bir etki bu yüklemeye çalıştığınızda. Ben hiçbir JS hataları almak, ancak Konsol sekmesinde Kundakçı I "407 Proxy Authentication Required" olsun

Yani bu işi yapmak için nasıl gerçekten emin değilim.

Amaç, RSS beslemesi kapmak başlıkları ve linkleri kapmak için bunu ayrıştırmak ve web üzerinde herhangi bir web sitesinde bazı HTML içine tükürmek muktedir olmaktır. Sitemin çeşitli RSS beslemeleri için ben "temelde basit bir RSS Widget yapıyorum.

My Javascript is wack

Gerçekten JavaScript ile bir acemi değilim. Ben oldukça iyi jQuery biliyorum, ama bu senaryo herhangi bir sitede gömülmüş olacak ve ben gerçekten jQuery kütüphanesinin güvenemezsiniz, çünkü bu durumda kullanmak mümkün değildi. Yani mevcut varsayılan XML ayrıştırma seçenekleri dayanarak bazı temel JavaScript yazmaya karar verdim. Burada herhangi bir öneri serin olurdu. Teşekkürler!

What's with the x and y vars

Onlar yol Sitem RSS beslemeleri oluşturur ilk başlık aslında RSS beslemesi başlığını olmasıdır. Ikinci başlık ilk öğenin başlık. Ilk bağlantı ilk öğeye bağlantıdır. Başlık almak için javascript kullanarak Yani, ilk ikinci başlığı ile ilk başlık (RSS başlık olan) yakala ve sonra başlamak zorunda öğenin ilk başlık olarak. Karışıklık için özür dilerim, ama bu benim konuyla ilgili sanmıyorum. Sadece benim kod açıklamak istedim.

1 Cevap

Ben YQL keşfetti beri kullanım durumları bu tür ile uğraşırken ben cross-domain vekiller hakkında endişelenmenize gerek JavaScript her şeyi tutmak ve olamaz, çünkü benim seçim yöntemidir. Daha da iyisi, müşteriye tüm işleme boşaltması mümkün olacak.

Bu basit sorgu sizin için yapacak: select title, link from rss where url='http://rss.news.yahoo.com/rss/topstories'

Permalink to query: https://developer.yahoo.com/yql/console/?q=select%20title%2C%20link%20from%20rss%20where%20url%3D%27http%3A%2F%2Frss.news.yahoo.com%2Frss%2Ftopstories%27

Örnek parçacık:

<script>

function cbfunc(data){
  for(var i in data.query.results.item) {
    var item = data.query.results.item[i];
    console.log(item.title);
    console.log(item.link);
  }
}

function execYQL(yql, callbackFuncName) {
    var url = "http://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent(yql) + "&format=json&callback=cbfunc";
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= url;
    head.appendChild(script);
}

execYQL("select title, link from rss where url='http://rss.news.yahoo.com/rss/topstories'");

</script>

Sadece cut & bir HTML dosyası içine yapıştırın ve daha fazla incelemek için açık kundakçı çatlak.