wordpressによって提供されたRSSフィードを使用して、WordPressブログの投稿をリモートWebサイトに表示しようとしています。しかし、もちろん、私はCORSに乗ろうとすることに対処しなければならない。したがって、私は現在PHPでXML to JSONプロキシサーバーを作成しようとしており、this resource as a guideを使用しています。XMLからJSONプロキシサーバーにXMLフィードを取得しない
Here's how I have my HTML set up for the output:
<div id="output"></div>
The ajax to call the PHP proxy:
// 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);
}
}
The PHP proxy code (The proxy will fetch the contents of the passed URL as a string, parse it as XML and convert it to JSON. The JSON string will be returned to the calling JavaScript process.):
<?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は、ブラウザによって異なる方法で実装されています。 – Hafenkranich
'$ r = curl_exec($ c);の直後の' var_dump($ r); 'を試してください – Hafenkranich
JavaScriptはデフォルトでjsonを解析しないと思っていました。私はここで間違っていますか?あなたの 'Display(data)'の始めにconsole.log(data)を実行します。デベロッパーコンソールの出力は何ですか? – Hafenkranich