JS(ajax)でphp(csv)の読み込み
こんにちは。
Javascriptのご教授お願いしたく、書き込みました。
今JavascriptでAjaxを使って、CSVを読み込むPHPを実行しています。
PHPでは、CSVを読み込み(readcsv.php)、その結果を別のファイル(alert.html)に受け渡しています。
問題が、読み込んでいるJavascript側でもデータを一つ一つ取得したいですが、
方法が分かりません。ご教授お願いします。
構成 : alert.html(Javascript), readcsv.php, test.csv
コード構成 :
--------------------------------------------------------------------------
alert.html
<script type="text/javascript">
$.ajax({
type: "POST",
url: "readcsv.php",
success: function(printString) {
alert(printString); --> ここをどうするべきか悩んでいます。
},
error:function(){
alert("error");
}
}
);
</script>
-------------------------------------------------------------------------------
readcsv.php
<?php
$filename = "test.csv";
$row = 1;
$rowS = 1;
if (($handle = fopen($filename, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, "*")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
$String = explode(",", $data[$c]);
foreach ($String as $AllString) {
echo $AllString."\n";
}
echo "\n";
}
}
fclose($handle);
}
?>
----------------------------------------------------------------------------
test.csv
1,2,3,4,6,8*9,1,2,3,5,7,2,1,3,5*7,2,1,2,3,5,7,2*1,5,3 ---> 数字の羅列(コンマ区切り)
----------------------------------------------------------------------------
です。
一番問題になっているところは、
alert.html の alertのところで、 readcsv.php から受け取った値を一つ一つ変数に格納したいところです。
ご教授お願いします。
お礼
ご丁寧なご返信大変ありがとうございます。 >>> サーバ上で言うcloud9と同じようにほぼ制約なくサーバサイトのプログラミングがすべて行えると考えてよいのでしょうか? 初歩的なテストであれば、同じように使えると考えていいはずです。 もちろん、クラウド環境は、ローカル環境と違う部分がどうしてもあるはずなので、サーバ側(クラウド環境)で実行する予定のものがすべて行えるとはいえません。 それでは下記のローカルサーバでも、ザンプのように、ほとんどのことは試せるので、学習のためにいろいろ作って試す分には、 これで十分なのですね。 これならcloud9がいらないので、今回のajaxを使ってクリックしたときにDOM生成してコンテンツがfadeinするようなことも問題なくできるはずなのですね。 Server running at http://localhost:8124/ するとほんだいにもどるのですが、ajaxをボタンをクリックしたときに実行して、要素を出現させるには、下記のようにそのものを実行すればよいというわけではないようですね。 http://localhost:8124/scripts/hellow_ajax.js ajaxのjsファイルはあくまでクライアント側なので、これは <script src="scripts/hellow_ajax.js"></script> という形で普通にレンダリング時に読み込んでやればOKという事でしょうか? ローカルサーバは、まずnode用のサーバのソースが入っているtest.jsをコマンドプロンプトで実行し、サーバを起動し、 http://localhost:8124/index.html という形でhtmlファイルをブラウザで実行してやればよいのでしょうか? あとは普通にクリックしてやれば、ajaxが実行されて、サーバ側で処理されて、 要素が出現するはずという事で良いでしょうか? >>> サーバサイドは、サーバ側で可能なことは多いけど、直接にクライアントのDOMの操作はできません。 やっぱりサーバサイドはDOM操作系の関数は存在しなく、実行することは不可能なのですね。 よってcreateElementなんて関数しらないよとか document is not defined つまりdocumentオブジェクトすら知らないよと出てくるのですね。 つまりdocumentオブジェクトやwindowオブジェクトにアクセスすらできないのであればこの中にある関数やプロパティは一切サーバサイドは使えないのですね。 document.getElementBy何とかとかの関数は一切使えないのですね。 フロント側からするとびっくりです。 >>> まあ、いずれにしても、Webサイトのプログラミングは、スタンドアロン、あるいは、クライアント&サーバ形式のプログラミングより、覚えることは多いし、プログラミング上の制約は多いし、セキュリティは、さらに重要になるので、大変です・・・。 特に、セキュリティに関しては、一般公開のこういう場とか、書籍では、模倣犯を恐れて、具体的なことが書かれないことが多いですからね。 勉強材料としては、IPAのセキュリティ資格試験の問題みたいなものを参考にしないと分かりにくいですね。 サーバサイドはフロントと比べると情報が少なく、自分が作ったソースでわからなくても危険なので、 ソース張ってここで教えてもらう事も厳しいのですね。 すると個人で仕事を請けたり、在宅で請けるのはサーバサイドはフロントと比べると非常に厳しく、 まず請けることが難しいのですかね。 ただフロントと違ってソースコードが閲覧者にばれないという点ではセキュアですがそれ以外は危険でしかないですね。 クライアント&サーバ形式のプログラミングというのはajaxの事でしょうか? 問い合わせフォームなどはこれに当たらないという事ですかね?
補足
ローカルで行ったことがなく頭がこんがらがっているのですが、 http://localhost:8124/index.html としてもindex.htmlファイルがサーバ用のソースのあるjsファイルのカレントディレクトリにないと実行できないのですかね。 index.htmlをカレントディレクトリにコピーしてみて実行したのですが、ずっと応答を待っていますのままになりました。 サーバ上ならhtmlをアップロードしてアドレスを指定すればよいとわかるのですがローカルだといまいちわかりません。 ローカルの場合のパスはサーバ用のJSファイルをhttp://localhost:8124/と考えてここからの相対パスを書いてやればよいという事でいいでしょうか? これでhtmlファイルをサーバ上で実行したことになるのですかね? つまりサーバ用のJSとindexがカレントディレクトリにあれば http://localhost:8124/index.html でよいのですね