【问题标题】:Cannot get $_SESSION variable correctly from angularjs无法从 angularjs 正确获取 $_SESSION 变量
【发布时间】:2016-06-30 16:32:24
【问题描述】:

我正在使用 angularjs,现在我想要一个 php 会话变量,所以我创建了一个名为 session.php 的 php 文件,里面有这个内容:

$_SESSION['phone'] = '55551864';
return json_encode($_SESSION['phone']);

来自 angularj,我有这个要求:

$http({
      method: 'GET',
      url: 'session.php'
}).then(function successCallback(response) 
{
    var phone_number = JSON.stringify(response);
    alert(phone_number);
}, function errorCallback(response) {
  alert("error happean!");
});

警报显示此内容:

{"data":"","status":200,"config":{"method":"GET","transormRequest":[null],"transoformResponse":[null],"url":"session.php","headers":{}},"statusText":"OK"}

我只想返回 55551864 发生了什么?

【问题讨论】:

  • 在你的 php 中你需要做 echo 而不是 return -> echo json_encode($_SESSION['phone']);。我对angularjs不熟悉,但我的猜测是在用echo修复了php问题之后,那么你的号码将在data中,所以你可以做response.data -> var phone_number = JSON.stringify(response.data);
  • 好的,现在我明白了:"\"555518641\""

标签: javascript php angularjs session


【解决方案1】:

$httpresponse 对象具有这些属性

  • 数据{string|Object} – 使用变换函数变换的响应体。
  • 状态{number} – HTTP 响应的状态码。
  • 标题{function([headerName])} – 标头获取函数。
  • 配置 - {Object} - 用于生成请求的配置对象。
  • statusText{string} – 响应的 HTTP 状态文本。

所以你要找的是response.data。正如 cmets 中所指出的,您应该使用 echo 而不是 return。 JSON 编码单个字符串是没有意义的,只是回显字符串。那么客户端就不需要解码了。

$_SESSION['phone'] = '55551864';
echo $_SESSION['phone'];
...
var phone_number = response.data;

【讨论】:

  • 好的,现在工作,但我有一个问题:为什么我在页面加载后得到 $http 内容?
  • $http 是对服务器的异步请求,这意味着它之后的代码将在发送和接收 Web 请求的同时继续执行。见Easy to understand definition of “asynchronous event”?
  • 哦,是的,我会尝试等待结果
猜你喜欢
  • 1970-01-01
  • 2012-08-08
  • 2013-04-04
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
相关资源
最近更新 更多