繁体   English   中英

使用 AJAX 从 Javascript 运行整个 PHP 文件

[英]Run entire PHP-file from Javascript with AJAX

在 $(document).ready(function() in index.php 上,下面的 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 arrays 中的数据存入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 在另一个 window 中,数据存储完美,一切正常 我也尝试过使用jQuery作为另一个 Stack Overflow 问题中的建议

  $('#dataSuccess').load('getData.php'); //instead for the AJAX code 

但结果完全相同且有些平庸。 所以我的问题是,为什么 AJAX 脚本没有运行整个php文件,因此,为什么没有数据存储在 LocalStorage 中?

HTML 页面上的 JavaScript 在被 XMLHttp 请求调用时未运行。 浏览器不会解析 JavaScript 通过 XMLHttp 请求接收的页面,因此不会运行 JavaScript。您必须向浏览器发送 output 才能运行它。 您最好的选择是让 PHP 返回您需要的数据,然后从 XMLHttp 请求中提取它。 例如, getData.php可以返回包含您需要的数据的 JSON 字符串。 然后在带有 XMLHttp 请求的页面上,您可以解析 JSON 字符串并将其保存到该页面上的 localStorage。

我认为您正在寻找jQuery.getScript

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM