2014-03-25 139 views
0

我正在使用phonegap,我试图从控制器发送编码为json的数组来查看。Phonegap - 使用Ajax将数组从MVC控制器发送到Javascript

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

$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 = [] 

是什么问题? 在此先感谢

+0

可以请你发布的print_r的结果($ A)(最终甚至json_encode($ A))在服务器端返回的值 –

+0

结果的print_r($ A)之前: '阵列( [0] =>数组([id] => 1 [name] => Brad [姓氏] =>匹特[年龄] => 40)[1] =>阵列([id] => 4 [name] => Matt [surname] => Damon [age] => 38))' 结果json_encode($ a): '[{“id”:“1”,“name”:“Brad”,“surname”:“Pitt”,“age”:“40”},{“id” “4”,“name”:“Matt”,“surname”:“Damon”,“age”:“38”}]' – Davide

回答

0

我会尝试根据我们已经知道的一些提示基于我们已经知道的答案建立答案。

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

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

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

希望这将有助于区别!

+0

在模型调用中有一个该死的“where”子句,所以我的代码是正确的而空的结果是正确的!谢谢洛伦佐! – Davide

+0

我不明白,因为在PHP中产生的数组不是空的,我们打印它,对吧?无论如何,重要的是你解决了:) –

相关问题