いろいろ復習しる。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title> <script src="js/jquery.js"></script> <script src="js/jquery-ui.js"></script> <script src="mashtwitt.js"></script> </head> <body> <h1>復習</h1> <p> 1.phpのcurlにてtwitterのxmlを持ってくる 2.jsにてphpと非同期通信 3.jsにてxmlをパースしてつっこみ 4.jsにてクリックイベント 5.ループ </p> <input type="text" name="id" value="twitterid" id="ids" /> <input type="password" name="pass" value="twitterpass" id="passs" /> <input type="button" id="bbg" value="開始"/><span id="result"></span> <hr> <ol id="aaa"></ol> <hr> <p class="noindent">リンクはご自由にどうぞ。 </p><p class="noindent"> <!-- hhmts start --> Last modified: Fri Aug 14 13:41:38 +0900 2009 <!-- hhmts end --> </body> </html>
こうなって
//ajaxしましょうそうしましょう function loadXML() { var url = "http://twitter.com/statuses/friends_timeline.xml"; $("#result").text("Loading"); $.ajax({ type: "get", data: { "url":url, "id":$("#ids").val(), "pass":$("#passs").val() }, url: "ajax.php", success: function (data) { $("#result").empty(); if (data=="fail") { // エラー時の処理 $("#result").text("“fail..."); } else { // 通常時の処理 alert(data); $("#result").text("OK!"); parseXML(data); } } }); } //名ばかりのXML文字列をhtmlにするだけのもの function parseXML(str){ $("#aaa").empty(); $(str).find("status").each(function(){ var name = $(this).find("user").find("screen_name").text() ; var txts = $(this).find("text").text() ; $("#aaa").append("<li><span style='font-size:20px;'>" + name +"</span><br/><span color=green>" + txts + "</span>" + "</li>"); }); } //イベント登録 $(function(){ $("#bbg") .click(function(){ $("input").attr({disabled:"disabled"});//インプットを止める var interval = 600000; loadXML(); setInterval(function(){ loadXML(); }, interval); return false;//デフォルト動作をキャンセル }); });
こうなって
<?php $id = null; $pass = null; $url = null; //パラメータ読み込み if ($_GET{'url'}) { $url = urldecode($_GET{'url'}); } else { $url = urldecode($_POST{'url'}); } if ($_GET{'id'}) { $id = urldecode($_GET{'id'}); } else { $id = urldecode($_POST{'id'}); } if ($_GET{'pass'}) { $pass = urldecode($_GET{'pass'}); } else { $pass = urldecode($_POST{'pass'}); } //処理メイン if( is_ok_continue($url) ) { $strhtml = null; if($id!=null){ //basic認証モードつきでcurl $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_USERPWD,$id.":".$pass); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); $strhtml=curl_exec($ch); curl_close($ch); }else{ $strhtml = file_get_contents($url, FALSE, NULL, 0, 10000); } if($strhtml != null){ // echo mb_convert_encoding($strhtml,"UTF-8","auto"); out($strhtml); }else{ out("fail"); } } else { out("fail"); } //チェック function is_ok_continue($text) { //ここでこれ以降処理していいのかを判断しませう。 //正しいuriか、とか、呼び出し元は想定範囲内か、とか。 if($text!=null){ return true; }else{ return false; } } //出力 function out($msg){ //なんかスゴイ出力のための処理 echo $msg; } ?>
こうなった。うごくといいですね。