| FAQ |
| Kalender |
|
|
#11 | ||
|
|||
|
Har WN som tidsfördriv
|
Så här ser allting ut nu (lite bättre översyn)
fetch.js Kod:
function xmlhttpPost(strURL) {
var xmlHttpReq = false;
// Mozilla/Safari
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
}
// IE
if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
alert('Hej MSIE');
}
xmlHttpReq.open('POST', strURL, true);
xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttpReq.onreadystatechange = function() {
if (xmlHttpReq.readyState == 1) {
updatepage('<br /><br /><img src="loader.gif" border="0" alt="" style="margin-left:15px;" />');
}
if (xmlHttpReq.readyState == 4) {
updatepage(xmlHttpReq.responseText);
}
}
xmlHttpReq.send(getquerystring());
}
function getquerystring() {
var form = document.forms['feeds'];
var word = form.feed.value;
qstr = 'feed=' + escape(word);
return qstr;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
Kod:
<html>
<head>
<script type="text/javascript" src="js/fetch.js"></script>
</head>
<body>
<form name="feeds" action="index.html" method="post">
<select name="feed">
<option value="">Välj</option>
<option value="http://www.geiser.se/feed" onclick='xmlhttpPost("show_feed.php")'>Geiser.se</option>
<option value="http://feeds.feedburner.com/tkjblogg?format=xml" onclick='xmlhttpPost("show_feed.php")'>TkJ</option>
<option value="http://www.dan.se/feed" onclick='xmlhttpPost("show_feed.php")'>Dan.se</option>
</select><br />
<div id="result"></div>
</form>
</body>
</html>
Kod:
<?php
$url = $_POST['feed'];
if(isset($_POST['feed']))
{
if(preg_match("/http:/", $url))
{
require_once("class_rss.php"); //Hämtar klassen
$rss = new rssHandler(); //Skapar instans till klassen
//Här anger du RSS-feedens url
$antal = 20; //Här anger du hur många inlägg du vill skriva ut
//Här skickar du in datan som klassen behöver och skriver ut den
echo $rss->show_feed($url, $antal);
}
}
?>
|
||
|
|
Svara med citat
|
|
|
#12 | ||
|
|||
|
Supermoderator
|
Testa att sätta xmlHttpReq till null istället för false och kör en try..catch-struktur istället vid skapandet av objektet.
__________________
Full-stack developer, free for smaller assignments |
||
|
|
Svara med citat
|
|
|
#13 | |||
|
||||
|
Medlem
|
Hm...
Först av allt vet vi inte om det blir något XMLHttepRequest-objekt överhuvudtaget. Du borde ta och lägga till en else-sats före xmlHttpReq.open(...): Kod:
else {
alert('Failed to create request object.');
return false;
}
Kod:
// Mozilla/Safari
if (window.XMLHttpRequest) {
xmlHttpReq = new XMLHttpRequest();
}
// IE
if (window.ActiveXObject) {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
alert('Hej MSIE');
}
Kod:
// Mozilla/Safari
try {
xmlHttpReq = new XMLHttpRequest();
} catch (e) {
// IE
try {
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
alert('Hej MSIE');
} catch (e) {
alert('Failed to create request object.');
return false;
}
}
|
|||
|
|
Svara med citat
|
|
|
#14 | ||
|
|||
|
Klarade millennium-buggen
|
fetch.js
Kod:
function sendRequest(url,callback,postData) {
var req = createXMLHTTPObject();
if (!req) return;
var method = (postData) ? "POST" : "GET";
req.open(method,url,true);
req.setRequestHeader('User-Agent','XMLHTTP/1.0');
if (postData)
req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
req.onreadystatechange = function () {
if (req.readyState != 4) return;
if (req.status != 200 && req.status != 304) {
// alert('HTTP error ' + req.status);
return;
}
callback(req);
}
if (req.readyState == 4) return;
req.send(postData);
}
var XMLHttpFactories = [
function () {return new XMLHttpRequest()},
function () {return new ActiveXObject("Msxml2.XMLHTTP")},
function () {return new ActiveXObject("Msxml3.XMLHTTP")},
function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];
function createXMLHTTPObject() {
var xmlhttp = false;
for (var i=0;i<XMLHttpFactories.length;i++) {
try {
xmlhttp = XMLHttpFactories[i]();
}
catch (e) {
continue;
}
break;
}
return xmlhttp;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
Kod:
<html>
<head>
<script type="text/javascript" src="js/fetch.js"></script>
</head>
<body>
<form name="feeds" action="index.html" method="post">
<select name="feed" onchange="sendRequest('show_feed.php?feed=' + this.options[this.selectedIndex].value, updatepage)">
<option value="">Välj</option>
<option value="http://www.geiser.se/feed">Geiser.se</option>
<option value="http://feeds.feedburner.com/tkjblogg?format=xml">TkJ</option>
<option value="http://www.dan.se/feed">Dan.se</option>
</select><br />
<div id="result"></div>
</form>
</body>
</html>
Detta är koden ifrån: http://www.quirksmode.org/js/xmlhttp.html med modifikationer i din html-kod för att passa scriptet. |
||
|
|
Svara med citat
|
|
|
#15 | ||
|
|||
|
Har WN som tidsfördriv
|
Det ska fungera som så att man i drop down listan väljer en feed... den skickar url'en till show_feed.php som tar emot det, skickar in den i klassen rss_class.php som i sin tur behandlar rss-feeden och återger det jag vill att den ska återge.
Jag ska testa det ni föreslår om ett litet tag.. återkommer. EDIT: hehe, missuppfattade det du skrev... jag ska testa den koden du skickade ![]() Jag uppskattar all hjälp ni ger mig
|
||
|
|
Svara med citat
|
|
|
#16 | |||
|
||||
|
Medlem
|
Det ser väl bra ut, men updatepage() kommer inte gilla att den får ett objekt och inte en sträng.
Två alternativ: 1) Ändra i sendRequest så callback() anropas med argumentet req.responseText (istället för bara req). 2) Ändra i updatepage() så den lägger in str.responseText i innerHTML (istället för bara str). Smaksak... |
|||
|
|
Svara med citat
|
|
|
#17 | ||
|
|||
|
Har WN som tidsfördriv
|
Citat:
Jag får upp en alert i FF, men inte i IE och Safari. Jag testade din try, catch... fungerade inte i någon. Citat:
|
||
|
|
Svara med citat
|
|
|
#18 | ||
|
|||
|
Har WN som tidsfördriv
|
Blir så ledsen.. ingenting fungerar
|
||
|
|
Svara med citat
|
|
|
#19 | ||
|
|||
|
Supermoderator
|
Använd denna instantiering istället:
Citat:
__________________
Full-stack developer, free for smaller assignments |
||
|
|
Svara med citat
|
|
|
#20 | ||
|
|||
|
Har WN som tidsfördriv
|
Samma resultat.. perfekt i FF, nada i IE och Safari
|
||
|
|
Svara med citat
|
| Svara |
|
|