当清晰数组时,Ajax数据为null

时间:2014-07-07 13:34:22

标签: jquery ajax arrays json

我有以下PHP代码:

        $organization_modules = $this->getDatabase()->template('
  SELECT * FROM Module Module
   INNER JOIN Organization_has_Module OHOM
   ON Module.id = OHOM.Module_id
   WHERE OHOM.Organization_id = ' . $_SESSION['User']['org'] . '
   AND Module.category_id = ' . $_POST['category_id'], MySqlTemplates::RFQ_FM);
    $all_modules = $this->getDatabase()->template('SELECT * FROM Module WHERE category_id = ' . $_POST['category_id'], MySqlTemplates::RFQ_FM);
    foreach ($organization_modules as $module)
    {
        for ($i = 0, $size = count($all_modules); $i < $size; $i++)
        {
            if ($module['id'] == $all_modules[$i]['id'])
            {
                $all_modules[$i]['is_owned'] = true;
            }
        }
    }
print json_encode($all_modules);

现在返回以下数组:

enter image description here

然而,当我在Chrome中调试它时,它表示数据为空:

这是我的ajax

      $.ajax({
    type: 'POST',
    url: '/Module/findByCategory',
    dataType: 'json',
    data: {
        request: 'ajax',
        category_id: id
    },
    success: function (data) {
        $('#module_content').html('');
        $('#module_content').prepend('<div class="col-md-12"><a href="/Modules/index" class="btn btn-primary"><i class="fa fa-arrow-left"></i> Tilbage</a></div>');
        if(data.length > 0)
        {});

谁能告诉我发生了什么事。我也看过Network-&gt; reponse,但即使在回复中它说它没有返回任何东西

输出数组 enter image description here

**更新**

如果我print json_encode('hello')

,请注意

然后我的结果不是空但hello

我的数组有问题吗?

更新2

好的,所以我试着选择我的所有用户并打印它们很有趣

并且工作了吗?

所以我的数组有明显错误,可能是有空值吗?

更新3

为了好玩,我确保没有值为null,现在它正在工作......

地狱发生了什么?!?!?!?

2 个答案:

答案 0 :(得分:1)

我按照OP的要求发布了答案:有未知的字符(屏幕截图上标有?),这可能是导致编码失败的原因。但是,考虑重新检查数据库,表格,php db驱动程序和其他拼图的编码,以确保它永远不会再发生,因为人们完全可以使用带有变音符号的名称,例如Ólafur Arnalds

答案 1 :(得分:-1)

您的代码看起来正确。查找为您的行创建的数组的错误/空值:

$all_modules = $this->getDatabase()->template('SELECT * FROM Module WHERE category_id = ' . $_POST['category_id'], MySqlTemplates::RFQ_FM);