gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:18:25 31 4
gpt4 key购买 nike

我想做的就是这样:

我有一个 php 全局变量 $currentID并使用一个简单的 jquery 脚本检查 url 的哈希中是否有“id”(页面),如果是,我想将该值赋予 $currentID 。我读了很多书,我注意到我将使用 Ajax,但我不会管理它。

我现在的代码是:

<script type="text/javascript">
$(document).ready(function(){
if (parent.location.hash != '' ) {
var theCurrentID = parent.location.hash.split('#')[1];
$.ajax({
url: 'my.php', //current page
type: 'post',
data: {theID: theCurrentID },
datatype: 'json',
success: function () {

}
});
}
// your code here
});
</script>

你能帮我一下吗?预先感谢您。

最佳答案

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. 此请求将发送到 PHP 生成 HTML 的服务器,它将把您指定的任何变量写入 HTML
  3. 然后,数据将作为 HTML(而不是 PHP)发送回浏览器,您可以在浏览器中使用 JavaScript 对 DOM 进行更改。

底线是,一旦 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

关于php - 使用ajax从jquery值更改php变量(同一页面),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16586451/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com