gpt4 book ai didi

php - Ajax 中的 RSS 阅读器 : Help with code, 有什么问题/缺失?

转载 作者:行者123 更新时间:2023-11-28 02:56:22 24 4
gpt4 key购买 nike

我目前正在学习 Ajax,我使用“Sams Teach Yourself Ajax in 10 分钟”。学到了很多,基本了解了Ajax。本书编写了代码示例,并逐一浏览代码以解释每一位的作用。然而。这段代码是作者写的有问题,我不知道是什么。

这是代码:

<html>
<head>
<title>An Ajax RSS Headline Reader</title>
</head>
<script language="JavaScript" type="text/javascript">
function getXMLHTTPRequest() {
try {
req = new XMLHttpRequest(); /* e.g. Firefox */
} catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
/* some versions IE */
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
/* some versions IE */
} catch (E) {
req = false;
}
}
}
return req;
}
var http = getXMLHTTPRequest();

function getRSS() {
var myurl = 'rssproxy.php?feed=';
var myfeed = document.form1.feed.value;
myRand = parseInt(Math.random()*999999999999999);
// cache buster

var modurl = myurl+escape(myfeed)+"&rand="+myRand;
http.open("GET", modurl, true);
http.onreadystatechange = useHttpResponse;
http.send(null);
}
function useHttpResponse() {
if (http.readyState == 4) {
if(http.status == 200) {
// first remove the childnodes
// presently in the DM
while (document.getElementById('news') .hasChildNodes())
{
document.getElementById('news').removeChild(document .getElementById('news').firstChild);
}
var titleNodes = http.responseXML .getElementsByTagName("title");
var descriptionNodes = http.responseXML .getElementsByTagName("description");
var linkNodes = http.responseXML .getElementsByTagName("link");
for(var i =1;i<titleNodes.length;i++)
{
var newtext = document .createTextNode(titleNodes[i] .childNodes[0].nodeValue);
var newpara = document.createElement('p');
var para = document.getElementById('news') .appendChild(newpara);
newpara.appendChild(newtext);
newpara.className = "title";

var newtext2 = document .createTextNode(descriptionNodes[i] .childNodes[0].nodeValue);
var newpara2 = document.createElement('p');
var para2 = document .getElementById('news').appendChild(newpara2);
newpara2.appendChild(newtext2);
newpara2.className = "descrip";
var newtext3 = document .createTextNode(linkNodes[i] .childNodes[0].nodeValue);
var newpara3 = document.createElement('p');

var para3 = document.getElementById('news') .appendChild(newpara3);
newpara3.appendChild(newtext3);
newpara3.className = "link";
}
}
}
}
</script>
<body>
<center>
<h3>An Ajax RSS Reader</h3>
<form name="form1">
URL of RSS feed: <input type="text" name="feed" size="50" value="http://"><input
type="button" onClick="getRSS()" value="Get Feed"><br><br>
<div id="news" class="displaybox"> <h4>Feed Titles</h4></div>
</form>
</center>
</html>

rssproxy.php 看起来像这样:

<?php
$mysession = curl_init($_GET['feed']);
curl_setopt($mysession, CURLOPT_HEADER, false);
curl_setopt($mysession, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($mysession);
header("Content-Type: text/xml");
echo $out;
curl_close($mysession);
?>

如果您能帮助我,我将不胜感激!

我只想知道这段代码有什么问题,而不是获得其他 Ajax RSS 教程的链接,除非它是完全相同的代码(当然没有故障)..

最佳答案

首先让我们测试一下 php 脚本是否可以获取并传送 rss feed

<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
// $mysession = curl_init($_GET['feed']);
$mysession = curl_init('http://www.spiegel.de/schlagzeilen/index.rss');


curl_setopt($mysession, CURLOPT_HEADER, false);
curl_setopt($mysession, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($mysession);
header("Content-Type: text/xml");
echo $out;
curl_close($mysession);
?>

只需从浏览器调用它并检查输出。
如果有效,请安装并使用客户端脚本调试器。例如。适用于 Firefox Firebug 。 JavaScript 错误将显示在控制台选项卡中。

关于php - Ajax 中的 RSS 阅读器 : Help with code, 有什么问题/缺失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com