0

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にデータが保存されないのかということです。

4

2 に答える 2

2

HTMLページのJavaScriptは、XMLHttpリクエストによって呼び出された場合は実行されません。ブラウザは、JavaScriptがXMLHttpリクエストを介して受信するページを解析しないため、JavaScriptを実行しません。実行するには、ブラウザに出力する必要があります。最善の策は、PHPに必要なデータを返してもらい、それをXMLHttpリクエストから抽出することです。たとえば、はgetData.php必要なデータを含むJSON文字列を返すことができます。次に、XMLHttpリクエストのあるページで、そのJSON文字列を解析し、そのページのlocalStorageに保存できます。

于 2012-04-11T00:44:01.877 に答える
0

私はあなたがjQuery.getScriptを探していると思います

于 2012-04-11T01:16:51.843 に答える