【问题标题】:Phonegap - Send array from mvc controller to Javascript using AjaxPhonegap - 使用 Ajax 将数组从 mvc 控制器发送到 Javascript
【发布时间】:2014-03-25 16:28:12
【问题描述】:

我正在使用 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 = []

有什么问题? 提前致谢

【问题讨论】:

  • 能否在服务器端返回值之前发布 print_r($a)(最终甚至是 json_encode($a))的结果?
  • print_r($a) 的结果:Array ( [0] => Array ( [id] => 1 [name] => Brad [surname] => Pitt [age] => 40 ) [1] => Array ( [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"}]

标签: javascript ajax json cordova controller


【解决方案1】:

我将尝试根据我们在 cmets 中已经知道的一些提示来构建答案。

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

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

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

希望这会有所帮助!

【讨论】:

  • 在模型的调用中有一个该死的“where”子句,所以我的代码是正确的,空的结果是正确的!!!!!!谢谢洛伦佐!
  • 我不明白,因为结果数组在 PHP 中不是空的,我们打印出来了,对吧?不管怎样,重要的是你解决了:)
猜你喜欢
  • 1970-01-01
  • 2019-06-21
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多