在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
}
一切正常!但问题是我的 AJAX 代码似乎没有运行整个 getData.php 文件,因为在通过 AJAX 执行 php 文件后 LocalStorage 仍为空。 但是(这是一个大问题),如果我只是在另一个窗口中刷新 getData.php,数据就会完美存储并且一切正常。我还尝试使用 jQuery 来实现此目的,如另一个 Stack Overflow 问题中所建议的
$('#dataSuccess').load('getData.php'); //instead for the AJAX code
但结果完全相同且有些平庸。所以我的问题是,为什么 AJAX 脚本不运行整个 php 文件,并且HENCE,为什么没有数据存储在 LocalStorage 中?
最佳答案
当 XMLHttp 请求调用时,HTML 页面上的 JavaScript 不会运行。浏览器不会解析 JavaScript 通过 XMLHttp 请求接收的页面,因此不会运行 JavaScript。您必须输出到浏览器才能运行。最好的选择是让 PHP 返回您需要的数据,然后从 XMLHttp 请求中提取它。例如,getData.php
可以返回包含您需要的数据的 JSON 字符串。然后在带有 XMLHttp 请求的页面上,您可以解析该 JSON 字符串并将其保存到该页面上的 localStorage 中。
关于javascript - 使用 AJAX 从 Javascript 运行整个 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098300/