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

时间:2012-08-22 11:33:21

标签: php javascript ajax jquery

我不确定我在这里做错了什么。我一直在研究这个问题。我已经基本上看了谷歌和这个页面上的所有内容,仍然没有理解我的第一页应该是什么样子,以使这个工作。

<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()条件 - &gt;(取决于sql数据库的响应)。

2 个答案:

答案 0 :(得分:1)

您需要摆脱var obj = jQuery.parseJSON(data);并直接使用data。 jQuery通常会检测JSON并自动解析它。尽管如此,将dataType: 'json'添加到您的ajax参数中。

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

答案 1 :(得分:1)

没关系! 我现在使用ajax的经验是,我不需要在任何时候获取PHP变量。因为如果需要检查某些东西是否存在,那么我们要么在第1页或第2页使用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中完全相同的数据字符串执行不同的任务。