0

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

<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 数据库响应上)。

4

2 回答 2

1

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

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

于 2012-08-22T11:46:10.450 回答
1

没关系!我现在使用 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 中使用完全相同的数据字符串执行不同的任务。

于 2012-11-30T23:04:04.887 回答