如何使用AJAX和JSON从一个页面抓取PHP变量到另一个页面


How to grab a PHP variable using AJAX and JSON from one page to another?

我不确定我是否做错了什么。我已经研究了很长一段时间了。我基本上已经浏览了谷歌和这个页面上的所有内容,但仍然不明白为了让它发挥作用,我的第一个页面应该是什么样子。

<script>
//firstpage.php
function fetch(){
   $.ajax({
      url: 'secondpage.php',
      type: 'POST',
      data: {
         id:'ok'
      },
      success: function(data){
         //var data = jQuery.parseJSON(data);
         if (data.phpvar == 'ok'){
            alert('Success!');// for testing
         }else{
            alert('Failure!');// for testing
         }
      }
   });
}
</script>

ajax请求第二个页面:

<?php
//secondpage.php
if($_POST['id'] == 'ok'){
    $return_data['phpvar'] = 'ok';
    return json_encode($return_data);
}
?>

我做错了什么???我是ajax的新手,所以请解释一下最好的方法。我的目标很简单,就是从第二页获取值为"ok"的PHP变量,并将其作为一种确认类型传递回第一页,以找出输入了哪个PHP if()条件->(取决于sql数据库响应)。

您需要去掉var obj = jQuery.parseJSON(data);并直接使用data。jQuery通常检测JSON并自动解析它。不过,请将dataType: 'json'添加到您的ajax参数中以确保这一点。

此外,您应该将PHP脚本更改为,始终返回一些JSON-如果它只是一个空对象。

永不终止!我现在使用ajax的经验是,在任何时候都不需要获取PHP变量。因为如果需要检查某个东西的存在,那么我们要么在第一页或第二页使用SESSION检查,要么使用COOKIE检查。否则,我们使用jquery数据发送,如下所示:

<script>
//firstpage.php
$.ajax({
   type:'POST',
   url:'secondpage.php',
   data:'id=ok&do=check',
   success:function(data){
   if(data=='good'){
      //do stuff
   }
   if(data=='bad'){
      //do stuff
   }
}});
</script>

请求页面:

if($_POST['id'] == 'ok' AND $_POST['do'] != ''){//something was sent, do..
    echo 'good';
}else    
if($_POST['id'] == 'ok' AND $_POST['do'] == ''){//if nothing was sent, do..
    echo 'bad';
}else{/*do nothing*/}
?>

最后,如果绝对必要的话,我们可以尝试在JS文件中运行PHP,并尝试使用PHP函数对数据进行拆分,然后将拆分后的数据作为ARRAY返回,然后我们可以使用$data[1]或$data[2]等数组部分。。等等。在我们的代码中使用jQuery中完全相同的数据字符串来执行不同的任务。