2014-03-25 135 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中產生的數組不是空的,我們打印它,對吧?無論如何,重要的是你解決了:) –

相關問題