从 AJAX/JSON 设置 PHP 变量

Setting PHP variables from AJAX/Json

本文关键字:PHP 变量 设置 JSON AJAX      更新时间:2023-09-26

目前我有这个代码:

索引.php

      var refreshId = setInterval(function() {
        $.ajax({
  url: ("http://www.example.co.uk/erc/user_data.php?imei="+inCallingNum),
  dataType: "json", //the return type data is jsonn
  success: function(data){ // <--- (data) is in json format
    $('#right-side').html(data.rightside);
        $('#caller').html(data.caller);
        $('.location').html(data.location);
        $('.battery-level').html(data.battery);
        //parse the json data
  }
});
    });

user_data.php

$profile = array();
$profile['rightside'] = $rightside;
$profile['caller'] = $caller;
$profile['nextofkin'] = $nextofkin;
$profile['location'] = $location;
$profile['battery'] = $battery;
echo json_encode($profile);

这可以很好地将信息添加到div 标签中,但是我现在需要做的是从user_data.php文件中获取一个 PHP 变量并在 index.php 文件中使用它。是否可以以这种方式发送/捕获PHP变量?

例如,在user_data.php我有一个变量$test,我想在索引中使用这个$test变量.php

感谢您的任何帮助

有很多

方法可以做到这一点,最简单(也是最透明的方法)是设置会话cookie。 这是一个位于客户端计算机上的小文件,可由子域 (x.mydomain.com.) 上的所有站点读取,基本上所有文件都与设置它的文件位于同一文件夹中。 您可以通过执行以下操作在 PHP 中轻松完成此操作:

  1. 在每个页面上,您要设置,获取或以其他方式检查变量...使用此代码

    session_start();  // Put this at the TOP of your page, below <? or just before you check the variables.
    
  2. 在页面上,您要设置变量...使用此代码

    $_SESSION['variable'] = "data";
    session_write_close();  // Use this after you are done setting the session data, to save it before the page execution is finished.  This is a good habit to get in to, it's kind of like when you fclose a file instead of waiting for the script to do it.
    
  3. 在你想要获取变量的页面上.. 使用此代码

    $test = $_SESSION['variable'];
    

您基本上可以使用 $_SESSION 数组来存储您希望在您的网站上被视为"全局"的变量。 论坛使用它来存储用户 ID 和会话哈希,以便以后对密码进行身份验证。 其他网站使用会话 Cookie 来限制给定时间范围内的用户活动。

--

还有另一种方法可以做到这一点,从您的页面中获取一个链接,该链接生成值$test向索引发送 GET 请求.php(例如,如果用户单击链接格式,则链接如下所示:

index.php?test=value

然后在索引上.php只需执行以下操作:

$test = $_GET{'test'];

这种方法适用于可能没有 cookie 支持或可能禁用 cookie 的用户;但非常明显,用户可以轻松更改 cookie 的值(这可能会产生看不见的结果)。

你所要求的不能真正完成,因为 index.php 是在user_data.php之前执行的。但是,由于您将结果从 user_data.php 发送到索引.php也许您可以考虑使用 JavaScript 使用变量。为什么不告诉我们更多关于您想要完成的事情,以便我们提出如何完成的建议。

两种方式:

要么将$test设置为$_SESSION['test'],然后将其编入索引.php

另类:

你试过用json_decode()

你在问题中有问题的答案!

即使你正在创建和数组编码为JSON,你实际上只是将值从php传递给javascript。

你同样可以做

$profile['test'] = $test;

然后在你的JavaScript中使用

data.test 

以获得您的价值。

问题是你想什么时候获得可变值?是在提供页面之前还是在 ajax 调用期间?

你应该使用 PHP 动态创建你的 JavaScript 代码:

alert("server name: <?php
  echo $_SERVER['SERVER_NAME'];
?>");

谨慎使用它,只是在极少数情况下。