$ _GET在if语句中随机取消设置

时间:2016-06-03 03:34:21

标签: php ajax

我确定这个愚蠢的问题有一个简单的答案,但我已经搜索了高低,并且无法弄清楚为什么这不起作用。

$tutorid = $_GET['userid'];

var_dump($tutorid);

//populate user tutoring subjects
if( isset($_POST['a'])) {
  $currentsubjects = get_current_user_subjects( $tutorid );
  unset($_POST['a']);
  echo json_encode($currentsubjects); return;
}

我有一个简单的AJAX函数,它将$_POST['a']设置为等于某事物。 var_dump($tutorid)正确显示网址中的ID。但是$tutorid中的get_current_user_subjects正在发送NULL

如果我尝试这样var_dump来检查$tutorid

$tutorid = $_GET['userid'];

//populate user tutoring subjects
if( isset($_POST['a'])) {
  echo json_encode($tutorid); return;
  // $currentsubjects = get_current_user_subjects( $tutorid );
  // unset($_POST['a']);
  // echo json_encode($currentsubjects); return;
}

然后我得到NULL。如果我在get_current_user_subjects( $tutorid )中的tutorid中硬编码(比如添加15或其他东西),该函数会像预期的那样将数据返回到console.log,但使用变量$tutorid会完全停止。我无法弄清楚为什么会这样!有人请赐教。

以下是AJAX。它可以在其他页面上找到,所以我假设问题是$_GET

$.ajax({
  url: 'profile.php',
  method: 'post',
  data: "a=true",
  dataType: 'json',
  success: function (x) {
    console.log(x);
  },
  error: function(a, b, c) {
    console.log(a);
    console.log(b);
    console.log(c);
  }

2 个答案:

答案 0 :(得分:0)

也许你可以使用这种方法。因此,POST

可以userid
$.ajax({
  url: 'profile.php',
  method: 'post',
  data: {a: a, userid:userid},
  dataType: 'json',
  success: function (x) {
    console.log(x);
  },
  error: function(a, b, c) {
    console.log(a);
    console.log(b);
    console.log(c);
  }

所以在行动之前以你的形式。你可以用隐藏的形式设置userid

<input type="hidden" name="userid" value="<?php echo $userid;?>" />

答案 1 :(得分:0)

将userId保存到会话并从那里获取。或者使用ajax请求传递userId。我不认为你的代码中的逻辑是正确的,就像你提供的信息一样。尝试在您的ajax方法发布时,在请求的页面中从$ _GET获取id,并且没有userId与请求一起传递,这是不正确的。据我所知,如果对该页面的请求不是&#39; get&#39;,那么$ _GET数组中就没有数据。 Session提供了InterPageCommunication。使用会话。