< /div>
私が作成した 3 つの div タグは、logo、copy、details で、それぞれレイアウト スタイルシートでスタイルが関連付けられています。フィードを分析するときにこれらを使用しますが、最初に要求したフィードにアクセスできるようにする必要があります。これは、前に説明した PHP オブジェクトを使用して実行できます。
カスタム PHP オブジェクトの作成
後で作成する XML HTTP リクエスト オブジェクトからアクセスできるように、ローカル サーバー上にリクエスト フィードのコピーを作成する小さな RSS クラスを PHP で作成しました。通常、ドメインを越えてファイルをリクエストすることはできません。つまり、リクエストしているファイルはローカル サーバー上にある必要があります。このクラスは、ローカル サーバー上でリクエストされたフィードのコピーを作成し、フィードへのローカル パスを返し、その後 Request オブジェクトによってアクセスされるため、クロスオリジン問題の解決策となります。
このクラスの唯一のメソッドはリクエスト メソッドであり、リクエストされた RSS フィードの URL を指すパラメータが 1 つだけあります。次に、ローカル サーバー上にディレクトリがあるかどうかを RSS 名で確認します。存在しない場合は、作成してそのアクセス許可モードを 0666 に設定します。これは、ディレクトリが読み取りおよび書き込み可能であることを意味します。読み取り可能に設定すると、ディレクトリに後でアクセスできます。書き込み可能に設定すると、フィードのコピーをローカル サーバーのディレクトリに書き込むことができます:
コードをコピー コードは次のとおりです:
// ディレクトリが存在しない場合は、ディレクトリを作成します
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666)
Windows の場合PHP 4.2.0 以降ではモード設定は必要ありません。ただし、存在しても無視されるため、プロジェクトが UNIX または Linux サーバーに移動された場合に備えて保存しておきました。
フィードをこのサーバーにコピーする前に、一意のファイル名が必要です。すべてのフィード名が一意であることを保証するために、完全な URL で md5 暗号化を使用しています。この新しいファイル名を使用すると、ファイルを指すディレクトリを説明する文字列を連結できます。これは、フィードのコピーを作成するときに使用されます:
コードをコピーします コードは次のとおりです:
/ /Create unique 上記で定義したパスと、要求された元のフィード URL への参照を使用して、
$file=md5($rss_url);
$path="$dir/$file. これで、ファイルのコピーを作成できます。最後に、リクエストへの応答として新しいファイルへのパスを返します:
コードをコピーします
コードは次のとおりです:
//フィードをローカルサーバーにコピーします copy($rss_url, "$path" ) ; return $path;
以下は、小さいながらも強力な RSS クラス全体です:
class RSS
{
function get($rss_url)
{
if($rss_url != " ")
{
//ディレクトリが存在しない場合は作成する
$dir = "rss";
if(!is_dir($dir))
{
mkdir($dir, 0666)
}
// name
$file = md5($rss_url);
$path = "$dir/$file.xml"
//フィードをローカルサーバーにコピー
copy($rss_url, "$path"); return $ path;
}
}
}
?>
この PHP クラスのメソッドにアクセスするには、クラスへのインターフェイスとして機能するリクエスト ファイルが必要です。これはまさにリクエストしているファイルです。このファイルは、最初にリクエストからクエリされたパスワード変数を検証し、リクエスタが許可されたユーザーではないことを示すメッセージを返すか、RSS フィード (リクエスト メソッドによって処理された後にローカル サーバーにコピーされる) を指します。応答するためのパス。この RSS フィードに応答するには、この RSS オブジェクトをインクルードしてインスタンス化し、要求されたフィードの URL をパラメータとして使用してリクエスト メソッドをアクティブにする必要があります:
コードをコピー
コードは次のとおりです:
if($password == "mypassword")
{
require_once('classes/RSS.class.php');
$rss = new RSS(); $request);
}
else
{
echo "あなたは権限のないユーザーです"
?>
POST リクエストを作成するには、まずリクエストオブジェクト。リクエスト オブジェクトの作成経験がない場合は、私の記事「AJAX の使用方法」を読むか、この記事のサンプル ソース コードを勉強してください。リクエスト オブジェクトが作成されたら、sendFeed メソッドを呼び出し、フォームで作成した URL を渡すことができます:
コードをコピー
コードは次のとおりです: function sendFeed(url){
post.onreadystatechange = sendRequest;
post.open("POST", url, true);
post.send(url)
}
PHP オブジェクトからの応答が正しく読み込まれたら、それに対応するローカル ファイルに再度リクエストを送信します。応答。この場合、post.responseText は新しいファイルへのパスを提供します。
function sendRequest(){
if(checkReadyState(post)){
request = createRequestObject();
request.onreadystatechange = onResponse; "GET",post.responseText,true);
request.send(null);タイトルと説明ノードを含む画像が含まれるものもあれば、含まれないものもあります。したがって、フィードバックを分析するときは、フィードバックに画像が含まれているかどうかを解読するために少しのチェックを行う必要があります。画像が含まれている場合は、その画像をフィードのタイトルとリンクとともに画像 div タグに表示できます。
コードをコピーします。 コードは次のとおりです。
var _logo = ""
; var _title = response.getElementsByTagName('title')[0].firstChild.data;
var _link = response.getElementsByTagName('link')[0].firstChild.data;
_logo += "
" + _title + "";
if(checkForTag(response.getElementsByTagName('image')[0]))
{
var _url = response.getElementsByTagName('url')[0].firstChild.data; _logo += "
} document.getElementById('logo').innerHTML = _logo;
各画像を表示するためにチェックするだけでなく、フィード内のすべてのアイテムを反復処理するときにもチェックする必要があります。画像が存在すると、タイトルおよびリンク ノードの他のすべてのインデックス作成が正しく機能しなくなるためです。したがって、画像タグが見つかった場合は、各トラバーサルでインデックス値 (+1) を増やして、タイトルとリンク ノードのインデックスを調整する必要があります:
コードをコピー
コードは次のとおりです:
if(checkForTag (response.getElementsByTagName('image')[0]) "" i>0){
var _title=response.getElementsByTagName('title')[i+1].firstChild.data; getElementsByTagName( 'link')[i+1].firstChild.data;
}
else{
var _title =response.getElementsByTagName('title')[i].firstChild.data;
var _link = response.getElementsByTagName(' link' )[i].firstChild.data; } 特定のタグが存在するかどうかを確認するには、checkForTag メソッドを使用できます。 false; } }
フィード分析を実行するには多くの可能性があります。たとえば、項目をカテゴリに割り当て、そのカテゴリを折りたたみ可能にして、ユーザーが見たいものを選択できるようにすることができます。例として、日付を使用してアイテムを分類します。これは、特定のアイテムの pubDate が前のアイテムの pubDate と異なるかどうかを解読し、それに応じて新しい日付を表示することで実現されます。
コードをコピー
コードは次のとおりです。 (IF (I & GT; 1) {
var Previouspubdate = Response.Getelements Bytagname ('PUBDATE') [I-1] .firstChild.data; spubdate || Previouspubdate == 未定義){
_copy += "< ;div id='detail'>" + pubDate + "
";
}
_copy += "
" + _title + "";
document.getElementById('copy') .innerHTML += _copy;
上記の最後の部分は、ユーザーがフィードから特定のアイテムを選択したときに詳細を表示するために使用される showDetails メソッドであることに注意してください。このメソッドには 1 つのパラメーター (項目インデックス値) があり、フィード内の詳細ノードのインデックスを検索するために使用されます:
コードをコピー
コードは次のとおりです: function showDetails(index){
document.getElementById ('details').innerHTML = response.getElementsByTagName('description')[index].firstChild.data;
}
結論
AJAX を使用してクエリ文字列をサーバー側スクリプトに送信し、カスタマイズされたその文字列に基づく応答は、Web 開発者であれば誰でも可能です。このようにして、次の Web アプリケーションは新しい可能性に満ちたものになります。
http://www.bkjia.com/PHPjc/318011.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/318011.html技術記事単純な HTML ファイルを使用してサーバー側スクリプトにリクエストを送信し、そのリクエストに基づいてカスタム XML ファイルを受信し、それをほとんどスワイプせずにユーザーに表示することを想像してください...