【发布时间】:2025-12-07 19:15:01
【问题描述】:
我正在尝试使用 wordpress 提供的 RSS 源将 wordpress 博客中的帖子显示到远程网站上。但是,当然,我不得不处理试图绕过 CORS 的问题。因此,我现在尝试在 PHP 中创建一个 XML 到 JSON 代理服务器,并使用this resource as a guide。
这是我为输出设置 HTML 的方式:
<div id="output"></div>
调用PHP代理的ajax:
// my test XML feed with only one post for now
var url = "http://www.intecllc.net/wp/feed/";
// AJAX request
var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"));
xhr.onreadystatechange = XHRhandler;
xhr.open("GET", "xmlproxy.php?url=" + escape(url), true);
xhr.send(null);
// handle response
function XHRhandler() {
if (xhr.readyState == 4) {
// parse response as JSON
var json;
if (JSON && JSON.parse) {
json = JSON.parse(xhr.responseText);
}
else {
eval("var json = " + xhr.responseText);
}
Display(json);
xhr = null;
}
}
// display post(s)
function Display(data) {
var output = document.getElementById("output");
Show("Data from URL: "+url);
if (data && data.item) {
if (data.item.length) {
// multiple statuses
for (var i=0, sl=data.item.length; i < sl; i++) {
Show(data.item[i]);
}
}
else {
// single status
Show(data.item);
}
}
// display item
function Show(item) {
if (typeof item != "string") {
item = item.title + ": " + item.description;
}
var p = document.createElement("p");
p.appendChild(document.createTextNode(item));
output.appendChild(p);
}
}
PHP 代理代码(代理将获取传递的内容 URL 作为字符串,将其解析为 XML 并将其转换为 JSON。 JSON 字符串将返回给调用 JavaScript 进程。):
<?php
ini_set('display_errors', false);
set_exception_handler('ReturnError');
$r = '';
$url = (isset($_GET['url']) ? $_GET['url'] : null);
if ($url) {
// fetch XML
$c = curl_init();
curl_setopt_array($c, array(
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_TIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true
));
$r = curl_exec($c);
curl_close($c);
}
if ($r) {
// XML to JSON
echo json_encode(new SimpleXMLElement($r));
}
else {
// nothing returned?
ReturnError();
}
// return JSON error flag
function ReturnError() {
echo '{"error":true}';
}
不幸的是,它没有抓取提要并对其进行解析。有人可以帮我解决问题吗?谢谢。
【问题讨论】:
-
我会先尝试一个处理 XHR 请求的库(jQuery 就可以了)。 XHR 在不同浏览器中的实现方式非常不同。
-
在`$r = curl_exec($c);`之后尝试
var_dump($r); -
我以为 JavaScript 默认不解析 json。我在这里错了吗?在你的
Display(data)的开头做一个console.log(data)。开发者控制台的输出是什么? -
你的ajax调用的结果是什么?
标签: javascript php json proxy