使用ajax从jquery值更改php变量(同一页面)

时间:2013-05-16 11:40:31

标签: php jquery ajax

我正在努力做到这一点:

我有一个php全局变量$currentID,并且使用简单的jquery脚本检查url的哈希中是否有“id”(页面),如果是,我想将该值赋给{{ 1}}。 我一直在阅读,我注意到我将使用Ajax,但我没有管理它。

我的代码现在是:

$currentID
你能帮帮我吗?提前谢谢。

1 个答案:

答案 0 :(得分:4)

PHP是一种服务器端语言,这意味着一旦将数据发送到浏览器,PHP变量和数据就无法更改......

但是,使用AJAX,您可以向PHP页面发送另一个请求,并根据结果更改DOM中的数据。

考虑一下:

var id = parent.location.hash.split('#')[1];;

$.ajax({
    url: 'http://www.example.net/id.php',
    dataType: 'JSON',
    data: {id: id},
    success: function(data){
        // Do whatever you want with you JSON object
        // The following will log what has been returned
        console.log(data);
        // If you want to update your id variable then simply do this
        id = data.id;
        // You can then change elements in the DOM that reflect what your PHP
        // variable originally set
        $('#id').text(id);
    }
});

以下内容将包括加载页面时发送的$currentID ...但是,您可以使用上述脚本更新此文本。

<p>My current ID is: <span id="id">$currentID</span></p>

请注意:这不会更新PHP变量,因为一旦PHP将数据发送到浏览器,脚本已终止且无法修改,也无法访问变量。上面的脚本只会更新HTML中的文本。

服务器端脚本

在开始编程PHP之前,您需要了解服务器端脚本的功能,这非常基本:

  1. 您向my.php
  2. 发送请求
  3. 此请求转到PHP生成HTML的服务器,它会将您指定的任何变量写入HTML
  4. 然后将数据作为HTML 非PHP 发送回浏览器,您可以使用javascript对DOM进行更改。
  5. 最重要的是,一旦PHP生成并将您的页面数据发送到浏览器,那么该页面上就不存在与PHP无关的内容了!它是纯HTML,或者它可能是任何其他类型的文档......

    解释它的另一种方法是:

    您的服务器会将PHP页面视为:

    echo "<p>My current ID is: <span id=\"id\">$currentID</span></p>";
    

    您的浏览器(javascript看到它),看到这样的页面

    <p>My current ID is: <span id="id">1</span></p>
    

    没有PHP变量可供访问,它根本就不存在!

    有关详细信息,请参阅以下内容:

    https://softwareengineering.stackexchange.com/questions/171203/what-are-the-difference-between-server-side-and-client-side-programming