【问题标题】:ajax post return php variable in phpajax post在php中返回php变量
【发布时间】:2016-12-06 23:33:53
【问题描述】:

我正在开发一个项目,该项目将 ajax 发布请求发送到 php 文件,然后设置一个 php 变量并在 js 中返回该变量。这一切都很好。我正在苦苦挣扎的是,一旦 getPhpVar() 函数运行,就可以在 index.php 文件中调用 $name。

这是程序应该做的: 1.运行getPhpVar()函数 2.发送ajax帖子到get.php 3.get.php 设置名称变量 4.get.php通过js发回name变量 5. 我可以在 php 中调用 name 变量 代码: index.php

<script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>     
<script>
function getPhpVar(varname) {
        $.post("get.php",
        {
          name: varname,
        },
        function(data,status){

            alert("Data: " + data + "\nStatus: " + status);
        });
}
getPhpVar(11);
</script>
<?php echo $name;
?>

get.php:

<?php
if( $_REQUEST["name"] ) {
   $name = $_REQUEST['name'];
   echo $name;
}

?>

【问题讨论】:

  • alert() 没有显示预期的结果吗?它显示了什么
  • index.php 中的&lt;?php echo $name; ?&gt; 将始终在您的ajax 调用之前运行。它在页面发送给用户之前在您的服务器上运行。
  • 我不确定您是否理解服务器端代码和客户端代码之间的区别。包含alert is JavaScript 的那个函数。您拥有从服务器获得的价值,这就是您使用的价值。究竟是什么在这里不起作用?
  • @codebro:我真的不知道如何解释这一点。您绝对应该查看先前链接的重复问题中非常全面的答案。您正在$name 获取值以响应AJAX 请求。您已经通过提醒价值证明了这一点。如果您还想将该值放入页面元素中,则可以在该 JavaScript 函数中进行。下面的答案证明了这一点。你有你需要的一切。这里真的没有问题,代码可以工作。
  • 正如其他人指出的那样,您似乎对服务器端与客户端感到困惑。为了帮助您,根据我的理解,这是您的应用程序的流程: 1. 客户端浏览器请求 index.php 2. 您的服务器收到请求,PHP 代码立即执行(那是您的 @987654328 @ ) 3. PHP 完成后,将结果发送到客户端 4. 客户端浏览器执行 Javascript 代码 5. 在某个时刻,Javascript getPhpVar 函数执行 6. 向服务器发送 AJAX 请求 @get.php 7. PHP 执行并发送返回$name 8. 来自客户端浏览器的Javascript回调得到响应

标签: javascript php jquery ajax


【解决方案1】:

你不能通过 echo 做到这一点,你需要像这样通过 javascript 做到这一点:

<script>
    function getPhpVar(varname) {
        $.post("get.php",
        {
          name: varname,
        },
        function(data,status){
            document.getElementById("result").innerHTML = data;
            alert("Data: " + data + "\nStatus: " + status);

        });
}
getPhpVar(11);
</script>

你的 html 文件会是这样的:

<div id="result"></div>

实际上您的$name 变量在服务器端,但您想在客户端使用它,要使用它,您需要将它放在某个var 中或在javascript 中使用echo 等价,即document.getElementById("result").innerHTML 或@ 987654325@,另一种方法是在php和echo中使用$_SESSION变量。

【讨论】:

  • echo 只是为了缩短我实际需要的代码 $name
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2021-11-24
  • 2019-05-16
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多