初めまして、プログラミング初心者です。
下記内容がなかなか解決できず困っております...。
ご存じの方がいらっしゃいましたらお力をお借りしたいです。
【実現したい内容】
下記①→②→③の順でファイルを読み込み、③のjsonデータをブラウザに表示させることです。
※各ファイルのコードは下記に記載しております。
①sample_php2.html
②sample_php3.js
③sample_php1.php
【困っていること】
②の「request.readyState」の値がずっと「2」のままで「4(=DONE)」になりません。
そのため、②の「request.onreadystatechange = function() 」以降の処理ができない状態です。
サーバーはxamppで、ローカルホストで動作させております。
何かアドバイスを頂けましたら凄く嬉しいです。
宜しくお願いします。
①sample_php2.html
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width"> 6 <title>Test</title> 7</head> 8 9<body> 10 <div id="ans1"></div> 11 <div id="ans2"></div> 12 <script src="sample_php3.js"></script> 13</body> 14</html>
②sample_php3.js
javascript
1var request = new XMLHttpRequest(); 2 request.open('GET', 'http://localhost/test/sample_php1.php?str=100', true); 3 request.responseType = 'json'; 4 request.send(null); 5 alert(request.readyState); 6 alert(request.status); 7 request.onreadystatechange = function() { 8 if(request.readyState == XMLHttpRequest.DONE && request.status == 200) { 9 var data = this.response; 10 alert(request.readyState); 11 alert(request.status); 12 alert(data.ans1); 13 alert(data.ans2); 14 console.log("ans1", data.ans1); 15 document.getElementById("ans1").innerHTML = "ans1=" + data.ans1; 16 console.log("ans2", data.ans2); 17 document.getElementById("ans2").innerHTML = "ans2=" + data.ans2; 18 } 19 };
③sample_php1.php
php
1<?php 2$ret = 0; 3if(isset($_GET['str'])) { 4 $str = $_GET['str']; 5 eval(sprintf('$ret=%s;',$str)); 6} 7$array = array("ans1" => $ret, "ans2" => $ret * $ret); 8header("Content-Type: text/javascript; charset=utf-8"); 9echo json_encode($array); 10?>
追記しました。(2020/04/16)
④sample_php2.php
php
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8" /> 5 <title>sample</title> 6</head> 7<body> 8 <div id="ans1"></div> 9 <div id="ans2"></div> 10 <script src="sample_php3.js"></script> 11</body> 12</html>