(21:04)
長いタイトルになってしまいましたが・・・。内容も長い・・・。
JavaScriptを使うと、
自ドメインのファイルにはアクセスできますが、
他ドメインのファイルにはアクセスできない。
という仕様があります。(最近知ったけど)
それで今回は、
phpを呼び出して、
その中でファイル取得して、
JavaScriptで処理する。
という方法をやってみました。
参考にしたURLはこちら。(大変助かりました、ありがとうございます)
「必ず得するかもしれない一言」さんの「javascriptからphp呼び出し」という記事。
http://blogs.yahoo.co.jp/koga2020/49620713.html
用意するのは、HTMLとPHPファイル。
今回は起動(body onload)時に処理を行うようにしています。
※ボタン用意してクリックしたらという動作も可能
1.【html】<body onload>でgetData()呼び出し
2.【html】getData()内で値を設定し、実行
→php実行
3.【php】callback名、引数名を取り出し
4.【php】他ドメインのtxtを取得
5.【php】改行コードを変換
(変換しないとエラーになります)
6.JavaScriptを実行する処理を設定($htmlに値をセット)
ココが肝心なところ
parent.'.$callback.'("'.$data.'");
parentは現在のフレームから他フレームを参照します。
現在のフレームは、【html】"getdata_Frame"のこと
他フレームは、【html】"form1"のこと
つまり、"form1"の"callback"を呼び出しますよの記述
7.【php】echoで$htmlを出力(実行)
8.【php】終了
9.【html】"form1"の"callback"に設定されたgetdata_callback()を呼び出し
10.【html】getdata_callback()で引数(newdata)にtxtの取得結果が設定されている
以下は参考ソースです。(動作確認してないので、動かなかったらごめんなさい)
index.html
<html>
<head>
<script type="text/javascript">
<!--
// php実行後に呼び出される関数を作成
function getdata_callback( newdata ){
//php実行後の処理を記述
}
// php呼び出す関数を作成
function getData(){// php実行後に呼び出される関数を設定
document.getElementById("form1").callback.value = "getdata_callback";
// php実行時に値を渡す場合は設定
document.getElementById("form1").arg1.value = "値は任意"; // php呼び出し
document.getElementById("form1").submit();}
// 起動時に呼び出す関数を作成
function initialize() {
// phpを呼び出す関数をコール
getData();
}
-->
</script>
</head>
<!-- php呼び出しのイベント。body onloadでなくても良い -->
<body onload="initialize()">
<!-- php呼び出し用のform。
id :任意
action :用意したphpファイルを設定
target :phpからform1のcallbackにアクセスするために必要
method:phpから結果を受け取るので、必ず"post"を設定
-->
<form id="form1" action="getdata.php" target="getdata_Frame" method="post"><!-- php実行後に呼び出す関数名を格納する用 -->
<input id="callback" name="callback" type="hidden">
<!-- php実行時の引数を格納する用 -->
<input id="arg1" name="arg1" type="hidden">
</form><!-- phpからform1のcallbackにアクセスするために必要 -->
<iframe id="getdata_Frame" name="getdata_Frame" style="width:0;height:0;visibility:hidden" tabindex="-1"></iframe></body>
</html>
getdata.php
<?php
//JavaScriptから受け取った値の取り出し
$callback = $_POST["callback"];
$arg1 = $_POST['arg1'];
//アクセスするファイルを設定
$path = "http://www.xxxx.co.jp/zzzz.txt";//ファイルの内容を取得
$temp = file_get_contents($path);//改行コードを変換(CR削除)
$data = str_replace("\r",'',$temp);
//改行コードを変換(LF→\n)
$data = str_replace("\n",'\n',$data);
//JavaScriptのコードを呼び出し
//取得結果($data)はcallbackの引数に設定
//これで値を受け渡せる
//これで値を受け渡せる
$html = '<script language="JavaScript">
parent.'.$callback.'("'.$data.'");
</script>
';
echo $html;
//php終了
exit;?>
(22:28)
0 件のコメント:
コメントを投稿