Phonegap - 使用Ajax将数组从mvc控制器发送到Javascript

时间:2014-03-25 16:28:12

标签: javascript ajax json cordova controller

我正在使用phonegap,我试图从控制器发送编码为json的数组进行查看。

在我的控制器(服务器端):

$users = Model_Users::find(1);
$a=$users->to_array();
return json_encode($a);

在我看来(使用phonegap进入智能手机应用程序):

$(document).ready(function() {  
    $.ajax({
        url: 'my/url...',
                method: 'POST',
                data: {

                },
                success: function(data) { 
                        alert(data); 
                }
        });  
});

这个工作正常,事实上我得到了这个警告:

data = {"name":"Jhon","surname":"Larry","age":"25"}

这项工作是因为查询结果只有一行。

相反,当我尝试获得多个查询结果时,例如:

$users = Model_Users::find('all');
$a=array();
foreach ($users as $user){
    array_push($a,$user->to_array());
}
return json_encode($a);

在这种情况下会出现空响应,实际上我得到了这个警告:

data = []

有什么问题? 提前致谢

1 个答案:

答案 0 :(得分:0)

我会尝试根据我们已经知道的一些提示建立一个答案,感谢评论。

首先,我们确信JSON是有效的(例如jsonlint.com)。

所以,现在,我们完全确定问题存在于PHP /服务器端。 我的解决方案:

  1. 注意不要在你需要的值之前回显/返回一些东西;
  2. 使用return;
  3. 更改echo
  4. 在回显值后添加exit;语句,以确保服务器答案中不包含其他字符;
  5. 不完全需要,但您甚至可以考虑设置header('Content-Type: application/json');
  6. 调试查看控制台并使用console.log代替alert()(有很多线程解释差异
  7. 希望这会有所帮助!