index.phpの$(document).ready(function()で、以下のAJAXが実行され、ファイルgetData.phpが実行されます。
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("dataSuccess").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getData.php",true);
xmlhttp.send();
getData.phpファイルでは、データはMySQLから収集され、JS配列に配置されます。
var guestData = new Array("<? for ($j=0;$j< sizeof($guestData);$j++) { print ($guestData[$j]); ?>","<?php } $j = $j+1; ?>");
そして最後に、js配列のデータをLocalStorageに保存します。
var guestDataCols = new Array();
guestDataCols = guestData[0].split(",")
var arrayIndex=0;
for(arrayIndex=0;arrayIndex<guestData.length-1;arrayIndex++)
{
localStorage.setItem(arrayIndex, guestData[arrayIndex]); // storing
}
すべてが機能します!しかし、問題は、phpファイルがAJAXを介して実行された後、LocalStorageがまだ空であるため、私のAJAXコードがgetData.phpファイル全体を実行していないように見えることです。ただし(これは大きな問題です)、getData.phpを別のウィンドウで更新するだけで、データは完全に保存され、すべてが機能します。別のStackOverflowの質問で提案されているように、これにもjQueryを使用してみました
$('#dataSuccess').load('getData.php'); //instead for the AJAX code
しかし、まったく同じでやや平凡な結果になります。だから私の質問は、なぜAJAXスクリプトがphpファイル全体とHENCEを実行しないのか、なぜLocalStorageにデータが保存されないのかということです。