前提・実現したいこと
ajaxでphpにリクエストをかけCSVファイルの内容をJSON形式でやり取りしたいのですがうまくいきません。
発生している問題・エラーメッセージ
SyntaxError: Unexpected token < in JSON at position 0
…とアラートで表示されます
該当のソースコード
PHP
1//json_encode.php 2 3//------------------------------------------------------------ 4//●改行を消す 5//------------------------------------------------------------ 6function indention($str){ 7 $str = str_replace("\n","",$str); 8 $str = str_replace("\r","",$str); 9 return $str; 10} 11 12//------------------------------------------------------------ 13//●配列の中身に該当するデータがあれば該当する件数を返す。 14//1件以上ある場合「件数」。0件の場合falseを返す。 15//------------------------------------------------------------ 16 17function searchData($array,$column_num,$serch_ward){ 18 $hit = 0; 19 foreach($array as $value){ 20 if($value[$column_num] == $serch_ward){ 21 $hit++; 22 } 23 } 24 return $hit > 0 ? $hit : false ; 25} 26 27//------------------------------------------------------------ 28//●CSVファイルを読み込む 29//------------------------------------------------------------ 30 31function open_csv($pass){ 32 $fp = fopen($pass,'r'); 33 $value = fgets($fp); 34 $member = []; 35 $flag = 0; 36 37 while($value !== false){ 38 $flag = 1; 39 $member[] = explode(",",$value); 40 $value = fgets($fp); 41 } 42 fclose($fp); 43 44 return $member; 45} 46 47//※「select_num.txt」には1桁の数字が記述されています。 48$fp = fopen('./data/select_num.txt','r'); 49$select_num = fgets($fp); 50fclose($fp); 51 52$select_num = indention($select_num); 53 54//CSVファイルを開く 55$all_question_child = open_csv('./data/question_child.csv'); 56$all_question_parent = open_csv('./data/question_parent.csv'); 57//該当する問題データの抽出 58$question_child = get_array_by_search($all_question_child,1,$select_num); //◎第三引数 59$question_parent = get_array_by_search($all_question_parent,0,$select_num); //◎第三引数 60 61echo json_encode([$question_parent,$question_child]);
ちなみに以下のような記述ならばajax通信が行われ、コンソールログに値が格納されていました。
PHP
1$data = [ 2 [1,"ふじ山","110","./../movie/quiz_01.mp4","5","./../img/quiz_icon01.png"], 3 [2,"あべのハルカス","1111111","./../movie/quiz_02.mp4","10","./../img/quiz_icon02.png"], 4 [3,"ほうりゅう寺","111110","./../movie/quiz_03.mp4","15","./../img/quiz_icon03.png"], 5 [4,"かんとう平野","111100","./../movie/quiz_04.mp4","20","./../img/quiz_icon04.png"], 6 [5,"おきのとり島","111110","./../movie/quiz_05.mp4","40","./../img/quiz_icon05.png"], 7 [6,"くろべ峡谷","11100","./../movie/quiz_06.mp4","60","./../img/quiz_icon06.png"], 8 [7,"たざわ湖","1110","./../movie/quiz_07.mp4","100","./../img/quiz_icon07.png"] 9 ]; 10 11 echo json_encode($data);
JavaScript
1$(function(){ 2 $.ajax({ 3 type: "POST", 4 url: "./../php/json_encode.php", 5 dataType : "json" 6 }).done(function(data){ 7 console.log(data); 8 }).fail(function(XMLHttpRequest, textStatus, error){ 9 alert(error); 10 }); 11});
ファイルの階層は以下の通りです…!
試したこと
・「JSからの相対パス」や「Ajaxの記述されたJSを読み込むHTMLからの相対パス」もどちらもURLに打ち込んでみましたが失敗しました。
回答1件
あなたの回答
tips
プレビュー