2011-05-10 69 views
1

我有一個解析使用json_encode()方法的數組,但返回的PHP腳本空白json_encode()任何回報

的PHP代碼如下

$companies = $db->getCustomerNames(); 
print_r($companies) 
if (!empty($companies)){ 
$jsonstring = json_encode($companies); 
echo $jsonstring ; 
} 
else{ 
    echo 'false'; 
} 
  • $公司被填充,我可以打印出來呢

我也有一個JavaScript看起來像這樣

jQuery.ajax({ 

    type: "GET", 
    url: "http://localhost/myscript.php" 
    success: function(msg) { 
     companies = jQuery.parseJSON(msg); 
     //DO OTHER STUFF WITH companies 
    } 
}); 
  • 的PHP腳本連接到數據庫,並呼應JSON編碼數組
  • JavaScript的使用AJAX獲取數組這樣我就可以使用它的內容
  • 當我打http://localhost/myscript.php我得到一個空白頁
  • 工程罰款我的本地服務器上
  • 該頁面在雅虎(不知道這是否有差別)
+2

如何'json_encode()'返回的輸出呢?這是'print_r()'輸出。 – BoltClock 2011-05-10 05:00:24

+0

你對json_encode和json_decode的問題感到困惑嗎? – deceze 2011-05-10 05:01:44

+1

在你使用'json_encode()'和'echo'結果的地方顯示你的PHP代碼 – Phil 2011-05-10 05:02:18

回答

1

嘗試使用function_exist因爲某些服務器JSON *功能可以被禁用或PHP被設置爲不使用它

+0

Spot。 json_encode函數不存在。鋤頭是雅虎的愚蠢。關於如何解決問題的任何想法? – Maro 2011-05-10 05:55:40

+1

@Maro Try http://upgradephp.berlios.de – deceze 2011-05-10 06:08:35

+0

我登錄到雅虎CP。在PHP部分下,版本被設置爲PHP4,我將其更改爲PHP5,現在我的代碼正常工作。謝謝Evgeniy Skulditsky – Maro 2011-05-10 21:50:56

2

主辦如果數組DISPLA像你在你的問題的文字中提到,然後有什麼是錯的。該頁面應顯示類似於

["IBM","EDS","MICROSOFT"] 

您是否也可以發佈相關的PHP代碼?

+0

謝謝您的建議。看來我之前看到的數組是print_r的結果。現在我沒有得到任何東西。就好像json_encode()不返回任何東西。我編輯了我的帖子以反映問題 – Maro 2011-05-10 05:27:53

+0

@Maro您正在填寫'$ companies',但您正在檢查'$ customers'。這是一個錯字嗎? – JohnP 2011-05-10 05:35:24

+0

是的,這是一個錯字,實際的代碼有全美$的公司我已經用實際文件 – Maro 2011-05-10 05:39:04

0

您的js是正確的,正如JohnP在您點擊http://localhost/myscript.php時所說的,您應該將數組顯示爲[「IBM」,「EDS」,「MICROSOFT」]。檢查您是否有類似下面的代碼:

<?php 
$a = array (0 =>'IBM' ,1=>'EDS' ,2=>'SUN' ,3=>'GOOGLE' ,4 => 'ORACLE'); 
echo json_encode($a); 
?> 
+0

我也期待這個,好笑的是它可以在2或我的本地服務器上正常工作。只是沒有在雅虎 – Maro 2011-05-10 05:37:15

0

首先,你做print_r($companies)那麼你就echo $jsonstring;取出的print_r線,因爲ofcourse響應將不會是一個有效的JSON字符串。

在你做echo之前,還要嘗試添加header("Content-Type: text/plain");,並確保將該字符串放在ANY輸出之前。

+0

我已經嘗試了兩個,但我得到了相同的確切行爲 – Maro 2011-05-10 05:51:29

+0

而且它將成爲一個空白頁面,如果你沒有做JavaScript的精通,把內容放在頁面上。因爲AJAX本身並不在屏幕上打印,但jqXHR對象保存了響應。在Chrome中使用Firebug或Web Developer工具並打開網絡選項卡,查看是否有任何AJAX會話繼續,並檢查您從您的收到的響應腳本 – 2011-05-10 06:22:34

+0

我明白,我的PHP腳本回應了JSON數組,這個腳本是通過jQuery AJAX調用從應用程序調用的,它通過數組並執行諸如自動完成和一些其他驗證之類的東西,這也可以正常工作本地,但是一旦我部署到雅虎託管的服務器,它就停止工作。 – Maro 2011-05-10 21:58:10