jquery ajax请求返回undefined

时间:2016-11-01 21:22:53

标签: javascript php jquery ajax

我正在尝试让链接执行一个非常简单的请求,但我似乎无法弄清楚为什么我返回的是" undefined"。

目前该链接是一个手动页面请求,但它是一个如此简单的订阅,我希望它不刷新页面(因此preventDefault)。但如果JS无法正常工作或被阻止,那么链接应该是正常的页面请求(两全其美?)。

这是捕获链接点击的JS

  $('#subscribe-link').click(function(e)
  {
    e.preventDefault();
    var type = $(this).data('sub');
    $.post('/includes/ajax/subscribe-article.php', { 'type':type },
    function(data)
    {
      alert(data.result);
      if (data.result == 'subscribed')
      {
        alert('subscribe');
      }
      else if (data.result == 'unsubscribed')
      {
        alert('unsubscribe');
      }
    });
  });

以下是提供它的PHP:

if($_POST && isset($_SESSION['user_id']) && $_SESSION['user_id'] != 0)
{
  if (isset($_POST['type']))
  {
    if ($_POST['type'] == 'subscribe')
    {
      echo json_encode(array("result" => "subscribed"));
      return;
    }

    if ($_POST['type'] == 'unsubscribe')
    {
      echo json_encode(array("result" => "unsubscribed"));
      return;
    }
  }
}

现在,我已经检查了什么"数据"自己返回的是:

{"result":"unsubscribed"}

哪个是对的,我不确定这次我错过了什么。

2 个答案:

答案 0 :(得分:2)

由于变量data包含预期结果的JSON表示,因此它显然是一个String。然而,您尝试将该字符串中包含的信息作为对象进行访问。为此,首先需要通过解码返回的JSON来创建字符串中的对象:

var myData = JSON.parse(data);
alert(myData.result);
...

答案 1 :(得分:0)

您需要将结果解析为JSON。 IE,data_array = JSON.parse(data);