Ajax调用。将值传递给另一个php文件

时间:2018-02-15 15:02:31

标签: javascript php ajax

我遇到了问题,希望你能提供帮助。 我有一个包含js的status.PHP文件。

STATUS.PHP

<? ..stuff... ?>
<html>
    <head>
        <title>BCM Status Page</title>
        <script src="jquery-3.3.1.min.js"></script>
        <script src="updater.js"></script>
    </head>
    <body bgcolor="#305c57" onload='init();'>

正如你在html中看到的那样,包括一个JS,在&#34; onload&#34;我正在调用名为updater.js的javascript的init()函数

现在位于 UPDATER.JS

function init() {
    setInterval(read, 2000)
}

function read() {
   $.ajax({
        type: 'POST',
        url: 'readDB.php',
        dataType: 'jsonp',
        success: function (data) {
            console.log(data);
            var json_obj = $.parseJSON(data);
            console.log(json_obj[0].gwnumber);   
        },
        error: function () {
            console.log("Error loading data");
        }
    });

}

我正在按照预期的方式对readDB.php进行ajax调用,事实上我在json_obj中有正确的值。

我的问题是:如何获取json_obj值并将其传递给status.PHP文件,该文件也包括JS? 希望你能帮忙。 TY

3 个答案:

答案 0 :(得分:1)

好的,在这个论点中有很多话要说,但我将是最简单的。

第一件事

php和Javascript是两种不同的编程语言,具有完全不同的范例。 第一种是back-end focused编程语言;

Javascript代替更多front-end focused,仅仅为了整体而言我必须提到JS也用于后端部分,其中包含一个名为Node.js

的特殊环境

回到问题,你要做的事情并非不可能,但正如你所说的那样,你的想法(如果我得到的话)就是将数据从js传递到php函数中的参数......

事实是,php在服务器之前是精心设计和重新设计的,而javascript是在客户端执行的,在客户端网页中没有更多的足迹。此链接非常好地描述了此过程:http://php.net/manual/en/intro-whatis.php

可能的解决方案是:

FRONT-END(js):对你要显示的所有数据进行另一个ajax调用(请求)到你想要详细说明的所有数据。

BACK-END(php):如果已经发出请求,则控制,然后使用全局变量$_POST & $_GET访问数据(取决于请求的类型),然后详细说明这些数据。

如果可以的话,我建议你检查你想对这些数据进行的操作是否需要在服务器端完成,而不是由js完成!

答案 1 :(得分:0)

考虑执行顺序:

  1. 用户访问status.php
  2. 浏览器请求status.php
  3. 服务器执行status.php并向浏览器发送响应
  4. JS请求readDB.php
  5. 浏览器请求readDB.php
  6. 服务器执行readDB.php并向浏览器发送响应
  7. JS处理响应
  8. 转到4
  9. 当你到达7时,太晚影响第2步发生的事情。

    您可以向status.php发出新的Ajax请求并在JS中处理响应,但由于status.php返回整个HTML文档,这没有用。

    您可以使用while (!Serial) { ; } 使用包含status.php的URL和包含来自Ajax响应的信息的查询字符串来加载新页面,但这会使得首先使用Ajax毫无意义。

    您应该更改readDB.php以返回所有需要的数据,然后使用DOM方法(或围绕它们的jQuery包装器)来修改用户已经在查看的页面。

答案 2 :(得分:0)

最简单,最快速(也许不是最性感的方式):

  • STATUS.PHP
  • 中创建全局变量 var respondData;
  • 你内部成功函数的ajax请求将数据回调分配给它

respondData = data;

现在,即使ajax请求完成,您也可以从代码中的每个位置访问它。请记住,确保在页面完全加载后以及ajax处理请求后尝试访问此变量。否则你会得到'undefined'