【问题标题】:Run entire PHP-file from Javascript with AJAX使用 AJAX 从 Javascript 运行整个 PHP 文件
【发布时间】:2012-04-23 07:22:18
【问题描述】:

在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-arrays 中:

  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 文件,因为 LocalStorage 在通过 AJAX 执行 php 文件后仍然为空。 但是(这是一个很大的问题),如果我只是在另一个窗口中刷新 getData.php,数据会完美存储并且一切正常。我也尝试过使用 jQuery 来解决这个问题,正如另一个 Stack Overflow 问题中所建议的那样

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

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

【问题讨论】:

  • 看起来您使用来自getData.php 的响应作为#dataSuccess 的内部HTML,但您实际在哪里执行它?
  • 部分正确。目前来自 getData 的响应只是“任务完成”,以提醒该文件已被 AJAX 打开和处理。这无关紧要。我所需要的只是一种从 javascript 运行整个 PHP 文件的方法(根据下面的回答者,它不是用 AJAX 和 XML 完成的)

标签: javascript php ajax local-storage


【解决方案1】:

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

【讨论】:

  • 我并不真正关心 PHP 返回什么,我真正想要的是执行 PHP 代码(因此数据存储在 localStorage 中)。难道不是只有一种方法可以从 js 运行一个完整的文件而不返回任何东西吗?有人会认为 .load('getData.php');在 jQuery 中会执行这样的任务,但显然不是。还有其他方法吗?
【解决方案2】:

我想你在找jQuery.getScript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2017-09-25
    相关资源
    最近更新 更多