在jQuery Ajax Success上运行PHP


Run PHP on jQuery Ajax Success

如何在

ajax 调用成功后将 PHP 变量设置为值?

头.php

<script>
    j.ajax({
        method: 'get',
        url: '/php/ajax/auto_select_market.php',
        data: {
            'city': geoip_city(),
            'state': geoip_region()
        }
    });
</script>

auto_select_market.php

include_once '../includes/library.php';
include_once '../includes/config.php';
session_start();
$market = ...
$_SESSION['CURRENT_MARKET'] = $market ? $market : ...

我需要在 ajax 调用成功后设置此变量。

<?php
    $user['CURRENT_MARKET'] = $_SESSION['CURRENT_MARKET'];
?>

但是,我不能只在 auto_select_market.php 的全局变量中设置变量。使用 global $user; 在其他文件中根本不起作用。

我不确定你想做什么。然而,这是我的镜头:

如您所见,如果您设置了一个$user变量,则这些值仅在执行 php 文件(即页面(期间有效。

如果希望该值保留在服务器中,以便在页面之间检索,则可以使用 $_SESSION 。我不完全确定您是否知道可以手动将对象设置为其上的值:

$_SESSION['user'] = $user;

这样,您就可以在页面之间保留$user值(当然还有$user['CURRENT_MARKET']值(。

成功调用

AJAX 后,您必须发送另一个确认请求,或者您必须相信客户端正确接收了所有数据,并且成功后考虑主客户端请求。

唯一的方法,如何向服务器提供一些数据,是将它们作为 POST/GET 请求或参数(没有 REST 扩展(发送。

只需使用另一个可验证的 $_SESSION 来存储数据。此会话可验证可以使用项目的任何php文件。

i.e. $_SESSION['USER'] = $user['CURRENT_MARKET'];

注意:如果会话未启动,请使用 session_start((。

另一种方式:您可以在退出 php 脚本之前使用上面的行。